Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-Jquery,用';在';方法(不是字符串)_Jquery_Events_Dynamic_Selector - Fatal编程技术网

Javascript-Jquery,用';在';方法(不是字符串)

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

我想使用“On”函数来附加事件,因为其他事件都不受欢迎(live、delegate、click…)

但是问题是:如果我们生成对象,我们需要在参数中使用选择器,而这个参数是一个字符串

样本: (上下文:动态表)

现在,如果我想使用“find”方法来避免这种情况,我该怎么办

    // ?? (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 () {