所以我有这个代码来检查Name是否存在,如果它存在,它会删除它嵌套的span标记。
<div id="box">
<br>
<span style="font-size: 12px">
<a>
<span style="color: #000000">
<b>Name</b>
</span>
</a>
</span>
但是名称也可以放在这些标签中:
<br>
<span>
<a>Name</a>
</span>
</div>
我如何使用jquery进行检查? 我试过了:
$('span:contains("Name")').remove();
$('span > a > span b:contains("Name")').remove();
似乎没什么用。
编辑#2:还有我刚才包含的br标签。我想删除它们只有在删除标签之前。
感谢。
答案 0 :(得分:2)
如果您想要使用文本“名称”确切地定位元素,则可以使用filter()
,而不是:contains
,它将使用文本定位元素,例如“带有其他文本的名称......”:< / p>
在.load()回调函数中设置代码
$('#box').load('myUri', function () {
$('#box span').has('b, a').filter(function () {
return $.trim($(this).text()) === "Name";
}).remove();
});
等同于:contains
将是:
$('#box span').has('b, a').filter(function(){
return $(this).text().indexOf("Name") != -1;
}).remove();
更新后的评论:
$('#box').load('myUri', function () {
$('#box span').has('b, a').filter(function () {
var toRemoveSpan = $(this).text().indexOf("Name") != -1 ? true : false;
if (toRemoveSpan && $('span').prev('br').length) {
$(this).prev('br').remove()
}
return toRemoveSpan;
}).remove();
});
这将不仅仅是:$('#box').empty();
如果这不是您想要的行为,您必须在问题中更具体。
答案 1 :(得分:1)
这样的事情怎么样:
$('a:contains("Name"),b:contains("Name")').parents("span").remove();
答案 2 :(得分:1)
根据编辑,您需要在加载元素后执行脚本。
你需要使用加载方法的回调来执行它,如果你使用.load()然后它有一个成功的回调,你可以调用它
答案 3 :(得分:1)