javascript – jQuery on click在控制台中执行时有效,但在页面加载时无效

前端之家收集整理的这篇文章主要介绍了javascript – jQuery on click在控制台中执行时有效,但在页面加载时无效前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在页面中使用以下 jquery.
var j = jQuery.noConflict();
j(document).ready(function(){
    console.log(j("#label_19"));
    j("#label_19").on("click",function(){
        alert("Clicked");
    });
});

加载文档时,控制台中会显示元素(它是一个复选框).但是当我单击该复选框时,不会抛出警报.但是当我复制相同的代码时(如下所示)

j("#label_19").on("click",function(){
        alert("Clicked");
    });

在控制台面板和按下运行.现在,当我单击复选框时,会抛出警报.在这种情况下可能是什么问题?

更新:

我在控制台中观察到的是:

Object[input#label_19.document_label attribute value = "Check-In"]

HTML标记

<input id="label_19" class="document_label" type="checkBox" value="Check-In" name="label[19]">

解决方法

符合您所提供事实的唯一解释是,在您准备回调之后但在您单击替换相关元素的元素之前,代码会运行.某种ajax回调或类似的.

您需要查看代码以找到发生这种情况的地方.要查找的内容是对包含#label_19元素的元素的任何html调用,或者(如果有jQuery和非jQuery代码的混合)对innerHTML的赋值.

您可以使用事件委派来解决此问题,这可能是也可能不是最佳答案,具体取决于您的代码正在执行的操作.看起来像这样:

var j = jQuery.noConflict();
j(document).ready(function(){
    console.log(j("#label_19"));
    j(document).on("click","#label_19",function(){ // This is the changed line
        alert("Clicked");
    });
});

在那里,我们不是挂钩点击实际的元素,而是将它挂在文档上,然后让jQuery告诉我们通过匹配我们在冒泡时给出的选择器的元素的点击.这样,事物正在破坏并重新创建#label_19元素并不重要,因为我们没有在该元素上挂钩处理程序.我们在文件上挂钩处理程序,并在事件发生时检查它是否通过了与该选择器匹配的内容.

但我不会盲目地使用事件委托,我会发现该元素真正发生了什么.

猜你在找的jQuery相关文章