0

如何确定节点兄弟是否是图像?

function linkify() {
if(supports3DTransforms && remove == 0) {
    var selector = '.linkroll a';
    var nodes = document.querySelectorAll(selector);

    for(var i = 0, len = nodes.length; i < len; i++) {
        var node = nodes[i];

        var sibling = node.nextSibling; // Dont know if this is right

        // I want to add if sibling is not an image...
        if(!node.className || !node.className.match(/roll/g)){

            node.className += ' roll';
            node.innerHTML = '<span data-title="'+ node.text +'">' + node.innerHTML + '</span>';

        }
    };
}
}

换句话说,我试图在 div 类的所有超链接上运行此函数linkroll,但我不希望它应用于任何超链接图像。

4

3 回答 3

0

您可以使用nodeNameDOM 元素的属性。

if(sibling.nodeName != "IMG")
// do something
于 2013-10-29T13:00:01.460 回答
0

使用 jQuery

function linkify() {
    if (supports3DTransforms && remove == 0) {
        var selector = '.linkroll a';
        $(selector).filter(function () {
            var next = this.nextSibling;
            console.log(this, $(this).next().is('img'))
            return !$(this).next().is('img')
        }).addClass('roll').html(function () {
            return '<span data-title="' + $(this).text() + '">' + this.innerHTML + '</span>'
        })
    }
}

演示:小提琴

于 2013-10-29T13:00:34.093 回答
0

如果您准备好使用 jquery,则非常简单的解决方案是使用下面的代码。

if($("a:not(:has(img))")){
  // do some thing here 
  } 
于 2013-10-29T13:03:32.663 回答