只有当a href完全匹配时,我才需要删除一些含有img的'a标签'。这是需要删除的代码 -
<a class="slideshow" href="?Action=thumbnail&Width=500&Height=500&algorithm=proportional" rel="lightbox[eventer]" onclick="myLightbox.start(this); return false;">
<img src="?Action=thumbnail&Width=80&Height=80&algorithm=fill_proportional">
</a>
因此,如果href等于上面的那个,则需要从dom中删除'a tag'和'img'。
==编辑=======
我使用专有的CMS在href
和src
标签中吐出标签,我实际上无法编辑网址周围的代码,这使得它有点笨拙。
答案 0 :(得分:6)
您可以使用适用于所有浏览器的代码:
var links = document.getElementsByTagName("a"), item;
var urlBase = '?Action=thumbnail&Width=500&Height=500&algorithm=proportional';
var urlFull = window.location.href + urlBase;
for (var i = links.length - 1; i >= 0; i--) {
item = links[i];
if (item.href == urlFull || item.href == urlBase) {
item.parentNode.removeChild(item);
}
}
注意:代码以相反的顺序遍历列表,以便在从DOM中删除项目并且实时节点列表发生更改时,它不会影响其余的遍历。
由于item.href
通常会返回一个完全限定的网址,而不是原始源HTML中的内容,因此我们会针对完全限定的匹配以及我们在源HTML中所期望的内容进行测试。
答案 1 :(得分:3)
您可以使用querySelectorAll()
和removeChild()
var url = '?Action=thumbnail&Width=500&Height=500&algorithm=proportional',
as = document.querySelectorAll('a[href="'+url+'"]'),
i, node;
for(i=as.length;i--;){
node = as[i];
node.parentNode.removeChild(node);
}
答案 2 :(得分:1)
我喜欢Joseph的回答,但是如果您需要使用不能处理querySelectorAll()
的浏览器,那么您可以使用以下内容:
var url = '?Action=thumbnail&Width=500&Height=500&algorithm=proportional',
elems = document.getElementsByTagName( 'a' ),
i = 0;
for ( ; i < elems.length; i++ ) {
if ( elems[i].href && elems[i].href.indexOf( url ) !== -1 ) {
elems[i].parentNode.removeChild( elems[i] );
}
}