关于jQuery中parent()和prev()的非常基本的问题

时间:2010-09-09 18:51:09

标签: javascript jquery parent-child parent

我正在使用JavaScript函数处理超链接的click事件。我想从超链接中检索数据。

页面如下所示:

<div class="div1">
   <div title="Title 1" class="div2">
      <p class="p1"><a class="linkJs">The link in question</a></p>
   </div>
</div>

<div class="div1">
   <div title="Title 2" class="div2">
      <p class="p1"><a class="linkJs">The link in question</a></p>
   </div>
</div>

JavaScript就像这样:

$(function() {
   $('a.linkJs').click(function(){
      value=$(this).parent().prev().text();
      alert(value);
   });
});

我想要的是div2中TITLE的值。点击我得到的第一个链接:标题1.点击第二个标题:标题2.

这一定是非常基本但我无法在任何地方找到答案。

感谢。

5 个答案:

答案 0 :(得分:3)

您想使用closest

var value = $(this).closest('div').attr('title');

您的问题是,<p>标记不是<div>的兄弟,而是一个孩子,所以您必须做parent()两次 - 但是,没有必要,因为closest函数是一个方便的快捷方式。此外,text()函数返回标记内的纯文本内容,如果您需要标记的title属性,则需要使用attr函数。

答案 1 :(得分:2)

您可以使用closest方法找到它:

   $('a.linkJs').click(function(){
      value=$(this).closest('div').attr('title');
      alert(value);
   });

答案 2 :(得分:1)

尝试使用closest()方法:http://api.jquery.com/closest/

  

获得第一个祖先元素   匹配选择器,从...开始   当前要素和进步   通过DOM树。

$(function() {
    $('a.linkJs').click(function(){
        value=$(this).closest(".div2").attr("title");
        alert(value);
    });
});

答案 3 :(得分:0)

var value = $(this).closest('.div2').attr('title');

div可能是更合适的选择器,而不是使用.div2,因为div.div2中可能还有其他div元素。

答案 4 :(得分:0)

不是很漂亮,但这也应该有效。

$(function() {
    $('a.linkJs').click(function(){
        value=$(this).parents()[1];
        alert($(value).attr('title'));
    });
});