页面ddlFilter
中有一个下拉列表,页面加载时还有一个复选框( id 239在divData
中)。更改下拉列表的值,将进行ajax调用,然后将divData
的内容替换为接收到的内容。接收到的内容是另一个复选框(例如id 249)的HTML。
单击任何复选框时,都应触发showProduct()
。
问题:最初在页面加载之后,当我单击复选框239时,会触发showProduct
。但是,在更改下拉列表并单击复选框249之后,该函数不会被触发。
控制台中没有错误。我认为事件处理没有绑定到异步路由添加的复选框。我该怎么解决这个问题。
ASPX:
<asp:dropdownlist id="ddlFilter" runat="server/>
<div id="divData">
<input type="checkbox" class="chkBx" id="239"> --line 1
<!--On changing the dropdown value, line 1 will be replaced by this.-->
<!--<input type="checkbox" class="chkBx" id="249">-->
</div>
JS:
$(document).ready(function(){
$("#ddlFilter").change(function(){
//code to make ajax call and bind new html inside divData
})
$(".chkBx").change(function(){
showProduct();
})
})
function showProduct(){
alert();
}
发布于 2015-12-29 22:49:39
尝尝这个
$( "body" ).delegate( ".chkBx", "change", function() {
showProduct();
});
$( "body" ).on("change",".chkBx",function(){
showProduct();
});
发布于 2015-12-29 22:42:53
如果通过ajax替换DOM元素而不刷新,则事件不会自动附加。
你可能会用
$(document).on("change",".chkBx",function(){
showProduct();
});
发布于 2015-12-29 23:00:33
我们使用Ajax来满足我们的需求,而不刷新page.In,您的示例更改了下拉列表的值,然后单击任何值,但在这种情况下,jquery不能与DOM element.So绑定,您必须在更改下拉列表值时调用函数showProduct。请使用以下文字:
$(document).on("change",".chkBx",function(){
showProduct();
});
https://stackoverflow.com/questions/34524281
复制相似问题