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 插件,它使用“a title”字段作为标题。由于标题在鼠标悬停时被删除,它在我单击的图库中显示为没有标题(图库中的其他人仍然显示他们的标题)。

我想做的是,对于我上面的 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
}

RegEx 测试以确保类名中不存在任何形式的 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 回答