通过将href与javascript匹配来删除dom元素

时间:2012-05-09 05:27:02

标签: javascript dom

只有当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在hrefsrc标签中吐出标签,我实际上无法编辑网址周围的代码,这使得它有点笨拙。

3 个答案:

答案 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);
}

support for querySelectorAll

答案 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] );
    }
}