Javascript-如果节点兄弟是一个图像

时间:2013-10-29 12:55:26

标签: javascript jquery html

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

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>';

        }
    };
}
}

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

3 个答案:

答案 0 :(得分:0)

您可以使用DOM元素的nodeName属性。

if(sibling.nodeName != "IMG")
// do something

答案 1 :(得分: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>'
        })
    }
}

演示:Fiddle

答案 2 :(得分:0)

非常简单的解决方案是使用以下代码,如果你准备好使用jquery ..

if($("a:not(:has(img))")){
  // do some thing here 
  }