1

次のような問題が発生しました。

サイトに見苦しいリンク タイトルが表示されないようにする JavaScript があります。

window.onload = function() {
    var links = document.getElementsByTagName("a");
    for (var i = 0; i < links.length; i++) {
        var link = links[i];
        link.onmouseover = function() {
            this.setAttribute("org_title", this.title);
            this.title = "";
        };
        link.onmouseout = function() {
            this.title = this.getAttribute("org_title");
        };
    };
};

これは私が必要とするものに完全に機能します。

ただし、「タイトル」フィールドをキャプションとして使用する Swipebox プラグインを使用したいと考えています。タイトルはマウスオーバーで削除されるため、クリックしたギャラリー内の画像のキャプションとして表示されません (ギャラリー内の他の画像には引き続きキャプションが表示されます)。

私がやりたいことは、上記の私の JavaScript では、クラス「swipebox」を持たないすべての「a」要素をターゲットにすることです。

どんな助けでも大歓迎です。

4

3 に答える 3

3

ループに含まれている場合、次のようなものが機能するはずです。

if(link.className.indexOf('swipebox') === -1){
    // do your magic
}

swipeboxこれにより、要素のクラスに存在するかどうかがチェックされ、存在しない場合にのみ魔法が実行されます。

編集

@raina77ow のおすすめ!

if(!(/\bswipebox\b/.test(link.className))){
    // do your magic
}

クラス名にswipeboxがどの形式でも存在しないことを確認する正規表現テスト。これにより、すべてのベースが十分にカバーされるはずです。

于 2013-06-03T14:15:35.507 に答える
1

あなたはこれを行うことができます:

window.onload = function() {
    var links = document.getElementsByTagName("a");
    for (var i = 0; i < links.length; i++) {
        var link = links[i];
        if(link.getAttribute("class").indexOf("swipebox") == -1) {
            link.onmouseover = function() {
                this.setAttribute("org_title", this.title);
                this.title = "";
            };
            link.onmouseout = function() {
                this.title = this.getAttribute("org_title");
            };
        }
    };
};

編集: PlantTheIdeaが言ったようにgetAttribute()、この場合に使用する方が理にかなっています...

于 2013-06-03T14:18:01.273 に答える
0

次の除外コードを使用できます。

if (link.className == null || link.className != "swipebox") {
    [...your two onmouseover/onmouseout functions...]
}
于 2013-06-03T14:17:32.590 に答える