有没有一个众所周知的错误,我可以在这里?
我有一个使用.on()的脚本,因为一个元素是动态生成的,它不工作。只是为了测试它,我用动态元素的wrap替换了选择器,它是静态的,它仍然不工作!当我切换到普通的旧。单击包装它工作,但。
(这只是不会为动态元素工作,显然,一个重要。)
这工作:
$("#test-element").click(function() { alert("click"); });
这不:
$(document).on("click","#test-element",function() { alert("click"); });
更新:
我右键点击,并在Chrome中“检查元素”只是仔细检查的东西,然后点击事件工作。我刷新,它没有工作,检查元素,然后它的工作。这是什么意思?
解决方法
您正在使用正确的语法绑定到文档,以侦听id =“test-element”的元素的点击事件。
它可能不工作,由于以下之一:
>不使用最新版本的jQuery
>不要在DOM内部包装你的代码
>或者你正在做一些事情,导致事件不会冒泡到文档上的侦听器。
要在声明事件侦听器之后捕获创建的元素上的事件,您应该绑定到父元素或层次结构中较高的元素。
例如:
$(document).ready(function() { // This WILL work because we are listening on the 'document',// for a click on an element with an ID of #test-element $(document).on("click",function() { alert("click bound to document listening for #test-element"); }); // This will NOT work because there is no '#test-element' ... yet $("#test-element").on("click",function() { alert("click bound directly to #test-element"); }); // Create the dynamic element '#test-element' $('body').append('<div id="test-element">Click mee</div>'); });
在此示例中,只有“绑定到文档”警报将会触发。