Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 发出ajax调用后jQuery函数不工作_Javascript_Jquery_Asp.net_Ajax - Fatal编程技术网

Javascript 发出ajax调用后jQuery函数不工作

Javascript 发出ajax调用后jQuery函数不工作,javascript,jquery,asp.net,ajax,Javascript,Jquery,Asp.net,Ajax,页面-ddlFilter中有一个下拉列表,页面加载时还有一个复选框(id 239在divData中)。更改下拉列表的值将进行ajax调用,然后用接收到的内容替换divData的内容。收到的内容是另一个复选框的HTML(如id 249)。 单击任何复选框时,它都应激发showProduct() 问题:最初在页面加载后,当我单击复选框239时,showProduct被触发。但在更改下拉列表并单击复选框249后,该函数不会被触发 控制台中没有错误。我认为事件处理没有绑定到asynchrounosly

页面-
ddlFilter
中有一个下拉列表,页面加载时还有一个复选框(id 239在
divData
中)。更改下拉列表的值将进行ajax调用,然后用接收到的内容替换
divData
的内容。收到的内容是另一个复选框的HTML(如id 249)。
单击任何复选框时,它都应激发
showProduct()

问题:最初在页面加载后,当我单击复选框239时,
showProduct
被触发。但在更改下拉列表并单击复选框249后,该函数不会被触发

控制台中没有错误。我认为事件处理没有绑定到asynchrounosly added复选框。我怎样才能解决这个问题

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>
$(document).ready(function(){
 $("#ddlFilter").change(function(){
   //code to make ajax call and bind new html inside divData
 })

 $(".chkBx").change(function(){
   showProduct();
 })
})

function showProduct(){
  alert();
}

通过ajax替换DOM元素而不刷新时,事件不会自动附加

你可以用

$(document).on("change",".chkBx",function(){
   showProduct();
 });

通过ajax替换DOM元素而不刷新时,事件不会自动附加

你可以用

$(document).on("change",".chkBx",function(){
   showProduct();
 });
试试这个

 $( "body" ).delegate( ".chkBx", "change", function() {
       showProduct();
    });

    $( "body" ).on("change",".chkBx",function(){
       showProduct();
     });
试试这个

 $( "body" ).delegate( ".chkBx", "change", function() {
       showProduct();
    });

    $( "body" ).on("change",".chkBx",function(){
       showProduct();
     });

我们使用Ajax来满足我们的需求,而不刷新页面。在您的示例中,您正在更改dropdown的值,然后单击任何值,但在这种情况下,jquery事件不能与DOM元素绑定。因此,您必须在更改dropdowm值时调用函数showProduct。 请使用以下资料:

$(document).on("change",".chkBx",function(){
   showProduct();
});

我们使用Ajax来满足我们的需求,而不刷新页面。在您的示例中,您正在更改dropdown的值,然后单击任何值,但在这种情况下,jquery事件不能与DOM元素绑定。因此,您必须在更改dropdowm值时调用函数showProduct。 请使用以下资料:

$(document).on("change",".chkBx",function(){
   showProduct();
});

尝试让id以字符开头。但我用css CLSA调用它。仍然,您无法附加事件,因为事件在
$(document.ready()
中仅附加一次。当您在不刷新页面的情况下替换元素时,事件将消失。因此您必须使用其他方法。如果id是动态的,如何调用该函数?尝试在数字id之前添加固定字符串,如
“ID249”
,尝试让id以字符开头。但我通过css CLSA调用它仍然无法附加事件,因为事件在
$(document).ready()中仅附加一次。当您在不刷新页面的情况下替换元素时,事件将消失。因此您必须使用另一种方法。那么,如果id是动态的,如何调用该函数?如果要使用
$(“.chkBx”)。请尝试在数字id之前添加一个固定字符串,如
“ID249”
。单击()
,将该代码添加到
Sys.Application.add_load()
而不是
$(document.ready()
,因为
Sys.Application.add_load()
是在每次ajax服务器运行之后执行的。如果要使用
$(.chkBx”)。单击()
,将该代码添加到Sys.Application.add_load()
中,而不是
$(document.ready()
,因为
Sys.Application.add_load()
是在每次ajax服务器运行之后执行的。
$(“body”).on(“change”,“.chkBx”,function(){})。为我工作
$(“body”)。在(“change”、“.chkBx”、function(){}),为我工作