2016-07-26 176 views
1

目前我已經有了這個代碼,它取代了超鏈接的span類。超鏈接包括一個縮寫,超鏈接的替代texxt包含相同的縮寫。現在我想要做的是以某種方式替換超鏈接替代文本中的第二個縮寫。這樣就沒有「點擊這裏訪問+」的「縮寫」名稱,而是一個別名。所以如果縮寫是ggl,別名應該是google。但是超鏈接不應該使用這個別名。可以幫我嗎? THX超鏈接替代文本替換

(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); 
+1

爲什麼你有兩個相同的功能?兩次使用'linkBuilder'函數並刪除另一個。 – kalsowerus

+0

因爲如果我兩次使用同一個類的函數,第二個鏈接的替換與第一個鏈接相同,即使它們有不同的縮寫。 –

+0

和我是一個初學者/ noob /種什麼 –

回答

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); 
+0

謝謝!這很好。 –

+0

只是問,即使我認爲這太多了,你(或別人)知道,如何實現這與PHP? –

1

你可能需要的是這樣的:

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

只是通過你想要的顯示名稱作爲第二個參數的鏈接。