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を使用する準備ができている場合、以下のコードを使用することです..

if($("a:not(:has(img))")){
  // do some thing here 
  } 
于 2013-10-29T13:03:32.663 に答える
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 に答える