jQuery元素选择

时间:2013-04-02 07:30:32

标签: jquery jquery-selectors

我不能简单地在API文档中找到这些信息,因为我不知道如何正确调用它。所以问题是:

我有这种jQuery选择器用法:

var $table = $('#sort-table');          // id of <table>
var $rows = $('tbody > tr', $table);    // , $table ???

那么$ rows的第二个参数是什么意思?如果你这么善良,请你帮我在jQuery文档中找到它吗?

6 个答案:

答案 0 :(得分:2)

  

var $ rows = $('tbody&gt; tr',$ table);

根据jQuery documents jQuery( selector [, context ] )

,$ table是上下文
$('tbody > tr', $table);  

$table.find('tbody > tr'); 

context用于使用给定的选择标准调用其上的查找

答案 1 :(得分:2)

第二个参数为选择提供context。您的rows变量将包含tr元素,这些元素是tbody元素的直接子元素,它们是$table中包含的元素的后代。< / p>

你也可以像这样写它,在这种情况下它的行为方式完全相同:

var $rows = $("#sort-table tbody > tr");

context参数有点等同于.find()方法,所以你也可以把它写成:

var $rows = $table.find("tbody > tr");

答案 2 :(得分:2)

表示在$ table

中找到tr

这类似于调用

var $rows = $table.find('tbody > tr');

第二个参数$('tbody > tr', $table);是上下文,它是可选的..

答案 3 :(得分:2)

它是上下文参数,相当于$table.find('tbody > tr')

给定的选择器tbody > tr将在给定的上下文$table内查找。

例如:在您的页面中,您可能有多个表,如果您使用选择器$('tbody > tr'),那么您只对一个表上的行感兴趣,将选择所有tr个所有表格。那不是你想要的。

但是你在$('tbody > tr', $table)中将上下文作为你感兴趣的表传递,那么选择器tbody > tr将仅针对$table表的子项执行,只获取所需的tr秒。

演示:Fiddle

如果您查看演示,则css属性$rows.css('color', 'red');仅应用于第一个表,其中$('tbody > tr').css('font-weight', 'bold');应用于所有表。

答案 4 :(得分:2)

它被称为选择器的上下文,用于将查询限制为某个“范围”,由您用作上下文的jQuery对象指定。

来自文档:

  

默认情况下,选择器在DOM开始时执行搜索   在文档根目录。但是,可以给出替代上下文   通过使用可选的第二个参数到$()函数进行搜索。   例如,要在事件处理程序中进行搜索,搜索可以是   像这样限制:

$( "div.foo" ).click(function() {
  $(  "span", this ).addClass( "bar" );
});

有关该

的更多信息,请参阅:http://api.jquery.com/jQuery/

在你的例子中意味着:

var $rows = $('tbody > tr', $table);

与:

相同
var $rows = $table.find('tbody > tr');

答案 5 :(得分:0)

看看这里发生了什么:

var $table = $('#sort-table');  
var $rows = $('tbody > tr', $table); 

在代码的第一行中,变量$table保持表格#sort-table

在第二行代码中,请仅在此'tbody > tr'中找到$table

这也可以这样写:

var $rows = $('tbody > tr', '#sort-table'); 
  //-says find-^^^^^^^^^--in-^^^^^^^^^^^----this table

您也可以通过查找来实现此目的:

var $rows = $('#sort-table').find('tbody > tr'); 

var $rows = $table.find('tbody > tr');