在jQuery中需要一个“HAS A”选择器

时间:2012-02-15 21:11:19

标签: jquery jquery-selectors css-selectors

我需要一个选择器说:

  

任何包含复选框的表格单元格

现在,我正在使用:

$('td input').filter(':checkbox').each(function() {
   $(this).closest('td').addClass('CursorPointer');
});
$('td.CursorPointer').on('click',function() {
   $('input:checkbox',this).click();
});

它有效,但可能不是“最佳”。

3 个答案:

答案 0 :(得分:7)

使用the :has() selectorthe has() method

// select all <td> elements that have a checkbox in them
$('td:has(input:checkbox)');
// same effect
$('td').has('input:checkbox');

请注意,input:checkbox相当于Sizzle / jQuery中的input[type="checkbox"]

您的代码示例可以重写为:

$('td:has(input:checkbox)').on('click', function() {
  $('input:checkbox', this).click();
});

或者...

$('td').has('input:checkbox').on('click', function() {
  $('input:checkbox', this).click();
});

请注意,.has()效率高于:hashttp://jsperf.com/jquery-has-vs-has虽然:has()稍微更具可读性恕我直言。

答案 1 :(得分:1)

$("td:has(:checkbox)")做你想做的事吗?你试过吗?

答案 2 :(得分:1)

怎么样:

$('td').has('input[type="checkbox"]').addClass('CursorPointer');

以下是 jsFiddle 的示例。