javascript jquery захват вложенных атрибутов - PullRequest
1 голос
/ 20 июля 2009

Это какая-то случайная вещь, которая мне нужна. В основном мои настройки примерно такие:

<div class="classname">
  <h3>
     <a class="anchor_classname" title="some_title">..</a>
  </h3>
</div>

Приведенный выше html-сегмент повторяется на странице для всех существующих записей.

Что мне нужно сделать, так это: используя Jquery, я хочу получить текст всплывающей подсказки с вложенного якоря (т. Е. "Some_title") и установить для этого текста атрибут title, содержащийся в div. Мне нужно, чтобы это было сделано для всех записей, где каждый текст заголовка уникален. Возможно ли это с настройкой, которую я показал, или мне понадобятся некоторые уникальные идентификаторы, чтобы различать записи? Может кто-нибудь описать, как сделать это с помощью jquery? Спасибо.

Обновление: по предложению Дэвида мне удалось использовать его код и немного изменить его следующим образом:

    $('a.anchor_classname').each(function () {
      var title = $(this).attr("title"); //line 1
      var div = this.parentNode.parentNode; //line 2
      div.title = title; //line 3
    })

Как я могу преобразовать строки 2 и 3, чтобы строго использовать функции jquery, такие как parent () и attr (). (Это работает, как есть, но я предполагаю, что было бы лучше использовать стандартные функции jquery для соответствия).

1 Ответ

2 голосов
/ 20 июля 2009

Дублирование информации таким образом кажется мне чем-то, что может быть вредным для доступности (или, по крайней мере, раздражающим для пользователей программ чтения с экрана), и обеспечивая эффекты, лучше достигаемые путем стилизации ссылки для заполнения h3 и h3 заполнить div.

Тем не менее, этот непроверенный код, вероятно, сделает эту работу:

jQuery('div.classname > h3 > a.anchor_classname').each(function () {
  var title = this.title;
  var div = this.parentNode.parentNode;
  div.title = title;
})

Или более медленный, менее эффективный подход jQuery-where-native-DOM-did-do:

jQuery('div.classname > h3 > a.anchor_classname').each(function () {
  var jq = jQuery(this);
  var title = jq.attr('title');
  var div = jq.parent().parent();
  div.attr('title', title);
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...