jQuery .on(“click”) - 替代.live()

时间:2013-08-07 13:41:44

标签: javascript html jquery jquery-on

在我的项目中,我将几个按钮附加到div:

$(".tab-content").append("<div class='landing_content'><button class='off-screen-nav-button btn btn-info btn_edit' data-effeckt='effeckt-off-screen-nav-right-overlay'>Edit</button></div>");

然后使用以下代码收听点击:

$(".tab-content").on("click",".btn-edit",function(){
  console.log('edit');
});

为什么这不起作用?我习惯使用.live()但它已被弃用。

感谢。

2 个答案:

答案 0 :(得分:7)

在您的标记中,您有btn_edit,在您的jQuery中,您有btn-edit

更改标记class以匹配jQuery选择器,如下所示:

$(".tab-content").append("<div class='landing_content'><button class='off-screen-nav-button btn btn-info btn-edit' data-effeckt='effeckt-off-screen-nav-right-overlay'>Edit</button></div>");

答案 1 :(得分:4)

你的方法不起作用的原因(除了有关btn-edit的指出之外)可能是因为你试图将一个事件绑定到DOM中实际不存在的元素,直到它之后附加了,曾经是已经折旧的LIVE,但你可以这样做:

//bind the event to the document which always exists and specify the selector
//as the second argument 
$(document).on("click",".tab-content .btn-edit",function(){
    console.log('edit');
});

希望这有助于查看文档here上的jQueries以获得更多帮助。