通过jquery选择具有类名称的特定字符串的所有元素

时间:2012-05-08 12:46:06

标签: javascript jquery

这是我的HTML DOM:

<div id="d1" class="Addable"><span class="yak-bak-nak vok-do-maria"> <p>Goola1</p>
<span>volaa</span></span></div>

<div id="d2" class="Addable"><span class="yak-bak-val vok-do-maria"> <p>Goola2</p></span></div>

<div id="d3" class="Addable"><span class="vok-do-maria yak-bak-nak"> <p>Goola3</p></div>

<div id="d4" class="Addable"><span class="vok-do-maria yak-bak-nak"> <p>Goola4</p></div>

<input type="button" class="Doop" value="Do" />

所以我想删除所有类别名称以“yak-bak”开头的divs,这意味着以上所有内容。

所以我试试这个剧本:

$('.Doop').click(function () {

    $('span[class|="yak-bak"]').parent('div').remove();
});

但只是d1和d2删除而d3,d4仍然存在,因为yak-bak类也是第二个我也尝试了这个:

$('.Doop').click(function () {

    $('span[class^="yak-bak"]').parent('div').remove();
});

那你的建议是什么?问题出在哪里?

2 个答案:

答案 0 :(得分:4)

要定位具有多个类的元素,其中一个类在属性类的开头是“yak-bak”,或者在其中间,可以使用:

<强> JQUERY

$("div[class^='yak-bak'],div[class*=' yak-bak']").parent('div').remove();

这将选择以“yak-bak”开头的类的元素和包含“yak-bak”所声明的类的元素。

答案 1 :(得分:0)

$('div').filter(function() {
  return $(this).has('span[class^="yak-bak"]');
}).remove();

<强> DEMO

或者

$('div').filter(function() {
  return $(this).has('span[class^="yak-bak"], span[class*=" yak-bak"]');
}).remove();

但第一个就足够了。