jquery on不起作用,但live确实使用1.7.1库

时间:2011-12-28 00:32:14

标签: jquery events

我有一个动态创建的按钮,所以我需要在我的代码上使用.live。这是一个例子:

$('#send').live('click', function(){
.....
..... code .....
.....
});

我正在使用jQuery库1.7.1,我想将其更改为使用.on但它不起作用。为什么是这样?语法不同吗?

我查看了文档,我似乎没有做错任何事情。我不介意把它留下来,但我想知道我做错了什么。

http://api.jquery.com/on/

2 个答案:

答案 0 :(得分:19)

语法不同吗?是。您是否阅读了所有链接到的.on() doco页面?

以下有关如何从.live()切换为.delegate().on()的摘要来自.live() doco page

$(selector).live(events, data, handler);                // jQuery 1.3+
$(document).delegate(selector, events, data, handler);  // jQuery 1.4.3+
$(document).on(events, selector, data, handler);        // jQuery 1.7+

所以在你的情况下你想要:

$(document).on('click', '#send', function(){
   // your code here
});

请注意,理想情况下,您不会使用$(document),但您将使用$(someotherelement)将处理程序附加到更接近“#send”元素的元素。如果可以,请使用'#send'的直接父元素,或者如果动态创建父元素,也使用父元素。

答案 1 :(得分:6)

要使用事件委派,.on需要两个选择器,例如.delegate

$('some container').on('click', '#send', function() { ... });