2013-04-12 3 views
0

У меня есть эта часть кода, которая проходит через все элементы, содержащие класс «menu-item-li», и помещает значение их тегов href внутри массива. Это код, чтобы сделать это:Как добавить текст перед каждым элементом массива?

var arr = new Array(); 
$(".menu-item-li").each(function() { 
    arr.push($(this).attr("href")); 
}); 

Они будут возвращать вещи, как:

  • link1.html
  • link2.html
  • link3.html
  • ... и так на

Теперь, что я хочу сделать, помещается текст перед каждым элементом в массив. Скажем, я хочу поставить «сайт /» перед каждым элементом. Результат должен быть таким:

  • сайт/link1.html
  • сайт/link2.html
  • сайт/link3.html
  • ... и так далее

Как изменить свой код Javascript, чтобы я мог добавить «веб-сайт /» в начало каждого элемента внутри массива?

Спасибо!

+0

Посмотрите на http://api.jquery.com/map/ – osahyoun

ответ

3

arr.push('website/' + $(this).attr("href"));, но вы также можете использовать .map способ.

var arr = $(".menu-item-li").map(function() { 
    return 'website/' + $(this).attr("href"); 
}); 
+0

Спасибо! Это сделал трюк! О, и я использую jQuery. Извините, что не упоминал. – Magali

+1

Ах да, не забывайте о '.get()'. – VisioN

1
var arr = new Array(); 
$(".menu-item-li").each(function() { 
    var str = "website/"+$(this).attr("href"); 
    arr.push(str); 
}); 
0

Используйте это,

var arr = new Array(); 
$(".menu-item-li").each(function() { 
    arr.push('website/' + $(this).attr("href")); 
}); 
1

Если массив содержит список элементов <a> - Я предполагаю, что, несмотря на название класса, потому что вы используете href свойство - то это просто :

var arr = $(".menu-item-li").map(function() { 
    return "website/" + this.href; 
}); 

Вам действительно не нужно снова звонить jQuery на this и вызовите метод attr, это пустая трата.

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