.find()方法jquery对象参数

时间:2015-08-01 05:27:41

标签: jquery

文档:https://api.jquery.com/find/

  

从jQuery 1.6 开始,我们还可以使用给定的jQuery集合或元素过滤选择。

按预期工作:

var attacks = "#incomings_table tr:not(:first,:last)";
    $(".paged-nav-item").each(function(){
        $.get(this.href,function(data){
            $("#incomings_table").find("tr:last").before($(data).find(attacks));
        },"html");
     });

以下赢了在指定元素之前插入任何内容:

var attacks = $("#incomings_table tr:not(:first,:last)");
    $(".paged-nav-item").each(function(){
        $.get(this.href,function(data){
            $("#incomings_table").find("tr:last").before($(data).find(attacks));
        },"html");
    });

我尝试使用Jquery对象作为使用相同选择器的不同任务的变量。

这些代码都不会在控制台上出错,并且两者都会被执行,只是后者无法执行.before()方法,因为它使用的是Jquery对象而不是一个字符串。

我已经看过.before()的文档,它接受了一个Jquery对象,正如您在$(data)的代码中看到的那样。所以我只能假设.find()方法。

我正在使用 Jquery 1.9.1 。问题是什么?

1 个答案:

答案 0 :(得分:0)

$("#incomings_table tr:not(:first,:last)")会找到目前在dom中的元素。但它当时不存在,所以它将为null。所以你应该使用"#incomings_table tr:not(:first,:last)"

var data = '<div>' + '<div class="b">' +
  +'hi' + '</div>' + '</div>',
  $sel = $('.b');

console.log('dom', $('#a').find($sel));
console.log('dom', $(data).find($sel));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="a">
  <div class="b">
    hi
  </div>
</div>

考虑上面的例子,它只会找出dom元素。

参考:https://learn.jquery.com/using-jquery-core/jquery-object/