2012-01-30 80 views
0

我加载页面加载JavaScript的Web应用程序存在:jQuery代码的元素不执行未在页面加载

$(function() { 
    $('.modal-delete').click(function() { 
    alert(); 
    }); 
}); 

我有一个HTML页面一系列按钮的警报空白正在单击时的消息框:

<button class="modal-delete btn danger"></button> 

工作正常。

但是,有一些AJAX调用产生更多的按钮,就像上面的那些按钮,但不是在页面加载!他们可以随时创建。这些按钮不会执行任何操作,但它们只是用于加载警报。它们是相同的,但因为它们在页面加载时从来没有存在过,所以Jquery代码在这些按钮上不起作用。我如何将相同的代码附加到这些按钮?

非常感谢:)。

回答

2

我想你会想jQuery的“活()”函数:

$('.modal-delete').live('click', function() { 
    alert(); 
}); 

这种结合是匹配的,而且元素在未来添加新元素时重新绑定:

“为所有与当前选择器匹配的元素添加事件处理函数,现在和未来”

+0

这取决于你使用的是什么版本的jQuery。 jQuery 1.7+应该使用'on()',在1.7之前应该使用'delegate()',除非你使用的是一个非常旧的版本的jQuery(在1.4.2之前),这是唯一一次你应该使用'live()'编写新代码,因为您不会有其他选项可用。 – 2012-01-30 13:34:39

+0

非常感谢您的支持,上次我看到的是1.4版本(ish),这可能会解释我的建议。作为一个观点,每个人都有优势/劣势吗?或者它只是命名约定/版本偏好? – dougajmcdonald 2012-01-30 13:37:04

1

变化的准备代码这个...

$(function() { 
    $("document").on("click", ".modal-delete", function() { 
    alert("click"); 
    }); 
}); 
相关问题