Javascript-Jquery,用';在';方法(不是字符串)
我想使用“On”函数来附加事件,因为其他事件都不受欢迎(live、delegate、click…) 但是问题是:如果我们生成对象,我们需要在参数中使用选择器,而这个参数是一个字符串 样本: (上下文:动态表) 现在,如果我想使用“find”方法来避免这种情况,我该怎么办Javascript-Jquery,用';在';方法(不是字符串),jquery,events,dynamic,selector,Jquery,Events,Dynamic,Selector,我想使用“On”函数来附加事件,因为其他事件都不受欢迎(live、delegate、click…) 但是问题是:如果我们生成对象,我们需要在参数中使用选择器,而这个参数是一个字符串 样本: (上下文:动态表) 现在,如果我想使用“find”方法来避免这种情况,我该怎么办 // ?? (find div) $("#dataTable tbody").on("click", "tr > ul > li > ul > li > div", function
// ?? (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());
});
是
如果您将目标设置为嵌套列表中的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()
或其快捷对应项的说法。如果要选择嵌套列表中的DIV元素,则这是一种方法:
$( '#foo' ).on( 'click', 'ul ul div', function () {
不过,我建议你去上课。只需在DIV元素上设置一个类,然后:
$( '#foo' ).on( 'click', '.bar', function () {
只需在div上设置一个类,而不是
“tr>ul>li>ul>li>div”
(顺便说一句,tr中不能直接有ul)。而且,这闻起来像是你们在用表格来布局。我不使用表格,我只是找到一个简单的方法来显示我的问题。当然,我可以用Class,Id。。。但是我想使用{parent(),children(),closest(),…}我如何做到这一点呢?on()
方法的第二个参数是选择器字符串。这里不能使用jQuery方法。它必须是一个字符串。因此,正如我在回答中所写,要么是'ul>li>ul>li>div'
,要么就是'ul div'
。OP似乎只想选择嵌套列表中的div元素(ul-inside-ul)。您的代码选择表中的所有DIV元素。确切地说,我只希望嵌套列表中的DIV元素。“查找”方法可能是个坏主意。。。如果我需要使用children()或closest()函数。主要目标是:我想在dynamic元素中使用非常实用的“JQuery选择方法”。@Matt另外,您的第一个代码块不起作用,因为$(这)
没有提到TBODY元素…@user988587:我更新了我的问题,解释了如何在嵌套的ul
@cimevidas中选择div
:我看不出OP在问题中说他希望$(这个)
成为TBODY
元素的位置?如果需要,可以使用event.delegateTarget
代替this
。
$( '#foo' ).on( 'click', 'ul ul div', function () {
$( '#foo' ).on( 'click', '.bar', function () {