Очень простой вопрос о parent () и prev () в jQuery - PullRequest
2 голосов
/ 09 сентября 2010

Я обрабатываю событие нажатия гиперссылки с помощью функции JavaScript. Я хочу получить данные по гиперссылке.

Страница выглядит так:

<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);
   });
});

То, что я хочу получить, это значение TITLE в div2. При нажатии на первую ссылку я получаю: Название 1. И, нажав на 2-е: Название 2.

Это должно быть очень просто, но я просто нигде не могу найти ответ.

Спасибо.

Ответы [ 5 ]

3 голосов
/ 09 сентября 2010

Вы хотите использовать closest

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

Ваша проблема в том, что тег <p> не брат или сестра <div>, а ребенок, поэтому вам придется делать parent() дважды - хотя в этом нет необходимости, поскольку функция closest удобный ярлык Кроме того, функция text() возвращает чистое текстовое содержимое внутри тега, если вам нужен атрибут title тега, вам необходимо использовать функцию attr.

2 голосов
/ 09 сентября 2010

Вы можете найти его с помощью ближайшего метода:

   $('a.linkJs').click(function(){
      value=$(this).closest('div').attr('title');
      alert(value);
   });
1 голос
/ 09 сентября 2010

попробуйте использовать метод closest(): http://api.jquery.com/closest/

Получить первый элемент-предок, соответствующий селектору, начиная с текущего элемента и проходя вверх по дереву DOM.1007 *

$(function() {
    $('a.linkJs').click(function(){
        value=$(this).closest(".div2").attr("title");
        alert(value);
    });
});
0 голосов
/ 09 сентября 2010

Не очень красиво, но это тоже должно сработать.

$(function() {
    $('a.linkJs').click(function(){
        value=$(this).parents()[1];
        alert($(value).attr('title'));
    });
});
0 голосов
/ 09 сентября 2010
var value = $(this).closest('.div2').attr('title');

Вместо использования div, .div2 может быть более подходящим селектором, поскольку внутри div.div2 могут быть другие элементы div.

...