用jQuery替换文本会出现多个链接错误

时间:2018-04-14 05:11:48

标签: javascript jquery text dynamic replace

我在链接列表中使用以下代码,根据用户指向的语言翻译其标题。例如,如果用户指向中文图标,则“文章标题”将替换为其中文版本。鼠标关闭后,标题将恢复为英语。这很好用。

我遇到问题的地方:有时我需要在同一行的“文章标题”之后添加另一个链接。每当我这样做时,脚本会在空白和默认之间发生恐慌并轻弹标题,因为它正在查找链接,但它并没有告诉它改变任何内容。

如何为此脚本添加例外?如何检查链接是否具有类“foo”,如果有,请忽略它?

$.each($("li"), function(i, elements) {
        var links = elements.getElementsByTagName("a");
        var article_title = elements.getElementsByClassName("article-title")[0];
        $.each(links, function(j, link) {
            var previous_title = article_title.innerHTML;
            link.addEventListener("mouseover", function() {
                $(article_title).fadeTo(200, 0.5, function(){
                    article_title.innerHTML = link.title;
                    $(article_title).fadeTo(200, 1, function(){});
                });
            });
            link.addEventListener("mouseout", function() {
                $(article_title).fadeTo(300, 0.5, function(){
                    article_title.innerHTML = previous_title;
                    $(article_title).fadeTo(300, 1, function(){});
                });
            });
        });
    });

1 个答案:

答案 0 :(得分:1)

jQuery有一个名为hasClass(className)的内置函数。只需使用它来查看a元素是否具有该特定类。

$.each($("li"), function(i, elements) {
        var links = elements.getElementsByTagName("a");
        var article_title = elements.getElementsByClassName("article-title")[0];
        $.each(links, function(j, link) {
            var previous_title = article_title.innerHTML;
            if (!$(link).hasClass("foo")) {
                link.addEventListener("mouseover", function() {
                    $(article_title).fadeTo(200, 0.5, function(){
                        article_title.innerHTML = link.title;
                        $(article_title).fadeTo(200, 1, function(){});
                    });
                });
                link.addEventListener("mouseout", function() {
                    $(article_title).fadeTo(300, 0.5, function(){
                        article_title.innerHTML = previous_title;
                        $(article_title).fadeTo(300, 1, function(){});
                    });
                });
            }
        });
    });

只需更换课程" foo"在上面的示例中,您希望忽略链接的实际类名。