我想使用“On”功能附加一个事件,因为其他事件已被贬值(live、delegate、click...)。
但问题是:如果我们生成对象,我们需要在参数中使用选择器,而这个参数是一个字符串!!
示例: (上下文:动态表)
//Wrong way
$("#dataTable tbody tr").on("click", function(event){
alert($(this).text());
});
//Good way
$("#dataTable tbody").on("click", "tr", function(event){
alert($(this).text());
});
如果我想使用“查找”方法来避免这种情况,我该怎么办
// ?? (find div)
$("#dataTable tbody").on("click", "tr > ul > li > ul > li > div", function(event){
alert($(this).text());
});
// What I would like to do
$("#dataTable tbody").on("click", $(this).find("div"), function(event){
alert($(this).text());
});
//and I don't want to do this :
$("#dataTable tbody").find('div').on("click", function(event){
alert($(this).text());
});
谢谢!
最佳答案
工作相当于:
// What I would like to do
$("#dataTable tbody").on("click", $(this).find("div"), function(event){
alert($(this).text());
});
是...
// What I would like to do
$("#dataTable tbody").on("click", 'div', function(event){
alert($(this).text());
});
如果您将 div
定位在嵌套列表内,那么您可能能够逃脱:
// What I would like to do
$("#dataTable tbody").on("click", 'ul ul div', function(event){
alert($(this).text());
});
...但这取决于您的tbody
中是否有其他ul
;您只需要在选择器中足够具体,即可从考虑中删除其他元素。您很少需要像 tr > ul > li > ul > li > div
那样具体,在这种情况下,最好将类应用于靠近 的元素div
(或 div
本身)并在其周围进行选择。
另请注意,只有 live()
会折旧。在撰写本文时 (1.7.2) delegate()
还没有,尽管我相信它会在 1.8 中出现。
没有讨论贬低 click()
或其对应的快捷方式。
关于jquery - Javascript - Jquery,使用 'On' 方法(不是字符串)绑定(bind)动态选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10448472/