尝试使用首选on方法调用,但代码不能与 on 一起使用,但可以使用 live 方法。
好的,我有一个简单的按钮元素。
<button id="EditVal" name="EditVal" style="btn" value="Edit Debt">Edit Debt </button>
如果我使用live方法,则此代码有效:
$("#EditVal").live("click", function(e){
alert('Edit this Val');
})
但这不是
$("#EditVal").on("click", function(e){
alert('Edit this Val');
})
我做错了什么?
答案 0 :(得分:9)
您使用的是on() bind(),而不是live()。要像live()
一样使用它,你应该写:
$(document).on("click", "#EditVal", function(e) {
alert('Edit this Val');
});
请注意,出于性能原因,我们最好在非动态祖先元素而不是on()
上调用document
,即使用delegate()代替live()
}。
答案 1 :(得分:4)
在页面加载时附加事件时使用on
。在动态加载内容时,您需要像on
一样使用delegate
,方法是将处理程序放在父元素上,然后传递过滤选择器。
试试这个:
$("#ParentOfEditVal").on("click", "#EditVal", function(e){
alert('Edit this Val');
})
答案 2 :(得分:3)
如果您在页面上动态删除html元素,那么您需要实时。这就是为什么如果EditVal在页面加载中存在则on设置为在EditVal上工作的原因。因为它不是我假设的,所以需要实时函数,因为它可以在初始页面加载后很晚。我认为这是最初生活背后的原始思想。您使用而不是直播的任何特殊原因?
答案 3 :(得分:2)
逻辑是.on()将事件绑定到DOM中的对象。然后,您将选择器作为参数给出,以找到您想要触发事件的子元素。
$("#parent_has_to_be_in_dom").on("click", "#myButton", function(event) {
// should work like live
alert("well hello");
});