2016-07-26 4 views
1

На данный момент у меня есть этот код, который заменяет класс span с гиперссылкой. Гиперссылка включает аббревиатуру, а альтернативный текст для гиперссылки включает в себя ту же аббревиатуру. Теперь я хочу, чтобы как-то заменить вторую аббревиатуру на альтернативный текст гиперссылки. Так что нет «нажмите здесь, чтобы посетить +« название », а вместо этого - псевдоним. Поэтому, если аббревиатура 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); 
+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, я бы изменил ее, чтобы принять объект element, а затем прочитал свойства для получения псевдонима и имени. Полное имя - это то, что вам показалось вам нужным, но не было в коде.

(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>"; 
} 

Просто передать имя-дисплея вы хотите для вашей ссылки в качестве второго аргумента.

Смежные вопросы