2013-03-19 1 views
0

Как я могу связать функцию каскадного к элементу еще не в DOM:Bind касакдного к элементу не в DOM

(function ($) { 
    $.fn.cascade = function (options) { 
     var defaults = {}; 
     var opts = $.extend(defaults, options); 

    // REST OF THE CODE NOT IMPORTANT FOR THE QUESTION // 

    }; 
})(jQuery); 

В PartialView, который будет загружен будет:

@Html.DisplayNameFor(m => m.PTDistrict_Id) 
@Html.DropDownListFor(m => m.PTDistrict_Id, Model.PTDistrictList, HeelpResources.PTDistrictViewDropDownListFirstRecord, new { id = "districtDropdown" }) 
@Html.ValidationMessageFor(m => m.PTDistrict_Id) 

Я попытался это, но не повезло:

$(document).on("change", "#districtDropdown", function() { 
    $.cascade({ 
     url: "/Address/ListCouncilByDistrict", 
     paramName: "districtId", 
     firstOption: 'Selecione o Concelho...', 
     childSelect: $("#councilDropdown") 
    }); 
}); 

Любые идеи? Благодарю.

+0

Вы не можете. Вам придется либо привязать его после события, например, щелкнуть, либо связать его после завершения запроса ajax. –

ответ

0

Как этот

$(document).on("change", "#districtDropdown", function() { 
    $(this).cascade({ 
     ... 
    }); 
}); 
+0

По крайней мере, так любезно дайте объяснения, когда голосуете, кто бы вы ни были, потому что это похоже на что-то вроде: * дыра просто так ударяет – 2013-03-19 18:33:30

+0

Привет, спасибо, но это не работает. – Patrick

0

Вы просто не можете это сделать. Период ...

Но вы можете использовать обработчик событий live. Как это описание говорит:

Присоединить обработчик события для всех элементов, которые соответствуют текущему селектор, сейчас и в будущем .

0

Что-то подобное может работать для вашей ситуации:

<select> 
    <option class="event" data-action="Cascade" data-someParameter="fooBar">Foo</option> 
</select> 
    <script> 

    var Event = { 
     Cascade: function(ele){ 
     //enter your actual cascade function. 
     alert(ele.attr("data-someParameter")); //alerts "123" 
     }; 
    }; 

    $(".event").on("click",function(){ 
     var ele = $(this); 
     Event[ele.attr("data-action")](ele); 
    }); 

    </script> 
+0

Привет, спасибо. И как я могу адаптировать ваш код для бритвы: @ Html.DropDownListFor (model => model.PTCouncil_Id, Model.PTCouncilList, new {id = "CouncilDropdown"})? – Patrick