1

这是我的 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" />

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

所以我试试这个脚本:

$('.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();
});

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

4

2 回答 2

4

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

查询

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

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

于 2012-05-08T12:54:37.123 回答
0
$('div').filter(function() {
  return $(this).has('span[class^="yak-bak"]');
}).remove();

演示

或者

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

但是第一个就足够了。

于 2012-05-08T12:47:32.530 回答