Как заполнить объект jQuery данными из ссылки внутри HTML-списка? - PullRequest
2 голосов
/ 22 декабря 2010

У меня есть список, который выглядит следующим образом:

<ul id="theLinks">
 <li><a href="one.php">One</a></li>
 <li><a href="two.php">Two</a></li>
 <li><a href="three.php">Three</a></li>
 <li><a href="four.php">Four</a></li>
</ul>

Я хотел бы заполнить объект jQuery данными из этого списка, чтобы он выглядел следующим образом:

var Links = {
  'One'   : 'one.php',
  'Two'   : 'two.php',
  'Three' : 'three.php',
  'Four'  : 'four.php' 
}

Как лучше всего решить эту проблему?

Заранее спасибо!

Ответы [ 4 ]

1 голос
/ 22 декабря 2010

Не проверено, но что-то вроде этого:

var Links = {};
$('#theLinks li a').each(function(index, value) {         
    Links[value.text()] = value.attr('href');
});
1 голос
/ 22 декабря 2010
var Links = {};
$('#theLinks li a').each(function(){
    Links[this.innerHTML] = this.href.substring(this.href.lastIndexOf("/") + 1);
});

Fiddle link

Примечание: ссылки будут не в порядке, поскольку это не массив.

Выходы :

Four: "four.php"
One: "one.php"
Three: "three.php"
Two: "two.php"
0 голосов
/ 22 декабря 2010
var obj = {};
$("#theLinks a").map( function() {obj[$(this).text()] = this.href });
alert(obj.One);
alert(obj.Two);

Демо: http://jsfiddle.net/karim79/9SPUY/

0 голосов
/ 22 декабря 2010

Ваш результат не массив, это объект.(И это не имеет ничего общего с jQuery, это прямой объект JavaScript. :-))

Вот как вы это сделаете:

var Links = {};
$('#theLinks > li > a').each(function() {
    var $this = $(this);
    Links[$this.text()] = $this.attr('href');
});

Живой пример

Примечание. Я использовал довольно ограничительный селектор, #theLinks > li > a (a только , когда он является прямым потомком li только , когда онпрямое дитя #theLinks).Вы можете использовать более свободную, если ваша структура может немного отличаться, например, #theLinks li a, которая учитывает промежуточные элементы между ul и li с, а также между li с и a с.Это полностью зависит от того, чего вы хотите достичь.Но с разметкой, которую вы дали, я, вероятно, был бы довольно сдержан.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...