1

我有几个外部 div,它们都包含 3 个内部 div class1 class2 class3。我想根据其内部 div 的 value 属性选择外部 div class1。例如,我想选择第一个 div,因为它的class1div 具有 value x。我如何用 jquery 做到这一点?

<div> <-----this is the div I want to select
  <div class="class1" value="x"></div>
  <div class="class2" value="y"></div>
  <div class="class3" value="z"></div>
</div>

<div> 
  <div class="class1" value="a"></div>
  <div class="class2" value="b"></div>
  <div class="class3" value="c"></div>
</div>
4

4 回答 4

2

我的第一个想法是:

$('.class1[value="x"]').parent();

但我不确定语法(编辑:它有效)。然而,这也可以工作:

$('.class1').filter(function() {
    return $(this).attr("value") == "x";
}).parent();

但是请注意,这些只会返回第一个父级(在具有匹配“值”属性的多个子 div 的情况下)。如果你想对多个父匹配做某事,你可以遍历结果$.each并单独查看它们:

$('.class1[value="x"]').each(function() {
    var parent = $(this).parent();
});
于 2012-05-22T02:13:17.160 回答
1

另一种方法是使用:has选择器

var elem = $('div:has(.class1[value="x"])');
于 2012-05-22T02:18:04.587 回答
1
$('div').has('div[value=x]');

演示

$('div:has([value=x])').closest('div');

演示 2

$('div[value=x]').parents('div');

演示 3

$('div>div[value=x]').parent('div');

演示 4

$.fn.getChildVal = function(val){  
  $('[value='+val+']').parent().css({background:'red'});
};

$('div').getChildVal('x'); 

插入 :)

从文档:

http://api.jquery.com/closest
http://api.jquery.com/has

于 2012-05-22T02:21:46.020 回答
0

你可以这样做。

           $(document).ready(function () {
            $("div.class1 [value='x']").parent('div');
        });
于 2012-05-22T02:18:19.463 回答