Jquery选择器.each()

时间:2011-03-15 13:53:40

标签: jquery

考虑以下HTML:

<div id="myfavorites">
 <p><button id="saveFav">Save my favorites</button> </p>
 <p><a href="http://bit.ly/fzgxya">http://bit.ly/fzgxya</a> <a class="favlinks" href="#">(remove me)</a></p>
</div>

按下按钮时,我想制作一个包含所有链接的json对象。

$('#saveFav').click(function() {
  var toSave = { "searchtext" : $('#searchText').val().trim() };
  var links = {};

  $('#myfavorites p').each(function(index) {
    links[index] = $(this).first('a').attr('href');
  });

  toSave.links = links;
}

但在$('#myfavorites p')。每个函数,$(this)不是 p 元素。我在这里遗漏了一些东西。如何迭代所有 p 并找到第一个 a 元素?

我是否正确构建了对象?我的意思是如果我将它传递给php页面,它会正确地进行json_decode吗?

感谢

3 个答案:

答案 0 :(得分:10)

尝试find()而不是first()

links[index] = $(this).find('a').attr('href');

first has no selector parameter

答案 1 :(得分:0)

试试这个:

  $('#myfavorites p').each(function(key,value) {
    links[key] = $(value).first('a').attr('href');
  });

jquery每个文档:http://api.jquery.com/jQuery.each/

答案 2 :(得分:0)

.first()不起作用。它需要一个选择器并从列表中返回1st,并且不带参数。

$('a', this).first().attr('href');

或者您可以使用:first选择器。

$('a:first', this).attr('href');