2

只有当 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等于上面那个,'a tag'和'img'需要从dom中移除。

======编辑=======

我正在使用一个专有的 CMS,它会在标签内吐出href标签src,我实际上无法编辑围绕 url 的代码,这使得它有点棘手。

4

3 回答 3

7

您可以使用适用于所有浏览器的这样的代码:

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通常会返回一个完全限定的 URL,而不是原始源 HTML 中的内容,所以我们针对完全限定匹配和我们在源 HTML 中所期望的内容对其进行测试。

于 2012-05-09T05:33:35.557 回答
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);
}

支持 querySelectorAll

于 2012-05-09T05:32:49.200 回答
1

我喜欢约瑟夫的回答,但是如果您需要使用无法处理的浏览器,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] );
    }
}
于 2012-05-09T05:43:14.343 回答