【问题标题】:hyperlink alternate text replacement超链接替代文本替换
【发布时间】:2016-07-26 14:08:36
【问题描述】:

目前我有这个代码,它用一个超链接替换了一个跨度类。超链接包含缩写,并且超链接的替代文本包含相同的缩写。现在我想做的是,以某种方式替换超链接替代文本中的第二个缩写。这样就没有“点击这里访问+'名称'缩写”而是一个别名。所以如果缩写是ggl,别名应该是google。但超链接不应使用此别名。某人可以帮助我吗?谢谢

(function($) {
    var number = "1234567";

    function linkBuilder(abbreviation) {
        return "<a href='https://www.test.com/" + abbreviation + "?sitenumber=" + number + "default'>Click here to visit " + abbreviation + "</a>";
    }

    function linkBuilder2(abbreviation2) {
        return "<a href='https://www.test.com/" + abbreviation2 + "?sitenumber=" + number + "default'>Click here to visit " + abbreviation2 + "</a>";
    }
    jQuery(document).ready(function() {
        var fl = $(".first-link");
        if (fl.length > 0) {
            fl.html(linkBuilder(fl.data("abbreviation")));
        }
        var sl = $(".second-link");
        if (sl.length > 0) {
            sl.html(linkBuilder2(sl.data("abbreviation2")));
        }
    });
})(jQuery);

【问题讨论】:

  • 为什么会有两个相同的函数?两次使用linkBuilder-函数并删除另一个。
  • 因为如果我对同一类使用该函数两次,第二个链接的替换与第一个链接相同,即使它们有不同的缩写。
  • 我是个初学者/菜鸟/随便什么

标签: javascript html alias alternate


【解决方案1】:

这是一个有效的 jsfiddle:

https://jsfiddle.net/e7qdx031/1/

linkBuilder() 应该是可重复使用的,正如 kalsowerus 所提到的。

另外需要说明的是,下面的代码返回的是一个元素的集合,而不仅仅是一个元素。

var fl = $(".first-link");
...
var sl = $(".second-link");

如果页面上有多个 .first-link 类,您提供的代码将无法正常运行。因此,我将使用 $.each() 遍历每个元素并分别对它们运行 linkBuilder() 函数。

至于 linkBuilder 函数,我将修改它以接受元素对象,然后读取属性以检索别名和名称。全名似乎表明您需要,但代码中没有。

(function($) {
    var number = "123456";

    function linkBuilder($obj) {
        var abbreviation = $obj.data('abbreviation');
        var name = $obj.data('name');
        return "<a href='https://www.test.com/" + abbreviation + "?sitenumber=" + number + "default'>Click here to visit " + name + "</a>";
    }

    jQuery(document).ready(function() {
        $('.first-link, .second-link').each(function(index, obj){
            $(obj).html(linkBuilder($(obj)));
        });
    });
})(jQuery);

【讨论】:

  • 只是问即使我认为这太多了,你(或其他人)知道如何用 php 实现这一点吗?
【解决方案2】:

你可能想要的是这样的:

function linkBuilder(abbreviation, alias) {
    return "<a href='https://www.test.com/" + abbreviation + "?sitenumber=" + number + "default'>Click here to visit " + alias + "</a>";
}

只需将您想要的链接显示名称作为第二个参数传递。

【讨论】:

    猜你喜欢
    • 2018-03-22
    • 2017-10-15
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    • 1970-01-01
    • 2011-09-19
    • 2022-12-05
    相关资源
    最近更新 更多