jQuery получает вложенный <a>атрибут элемента внутри элемента div - PullRequest
0 голосов
/ 21 августа 2011

Объект на странице

<DIV style="TEXT-INDENT: 0px; VISIBILITY: inherit" id=button46 jQuery16107163179349561973="2">
    <A title=Exit href="javascript:void(null)" name=button46anc>
        <IMG style="CURSOR: pointer" border=0 name=button46Img alt=Exit src="images/btn-exitoff.gif" width=66 height=39>
    </A>
</DIV>

Мне нужно получить значение атрибута title из div.

Потратьте несколько часов на это без удачи (все возвраты не определены)

$('div [id^="button"]').bind('click mouseover mouseout submit',function(event){
    testThis = $(this.children('a'));alert($(testThis).attr('title'));
    testThis2 = $(this.find('a'));alert($(testThis2).attr('title'));
});

Заранее благодарим за то, что сохранили мои волосы.

Ответы [ 3 ]

3 голосов
/ 21 августа 2011
$('div[id^="button"]').bind('click mouseover mouseout submit', function(event) {
    testThis = $(this).children('a');
    alert(testThis.attr('title'));
});
0 голосов
/ 21 августа 2011

Вам нужно превратить this в объект jQuery, прежде чем использовать на нем функции jQuery.

$('div [id^="button"]').bind('click mouseover mouseout submit',function(event){
    alert($(this).find('a')).attr('title'));
});
0 голосов
/ 21 августа 2011

Содержимое this не является объектом jQuery, это элемент DOM.Оберните его в объект jQuery для использования методов children и find, и тогда вам не нужно переносить результат:

$('div [id^="button"]').bind('click mouseover mouseout submit',function(event){
  var testThis = $(this).children('a'); alert(testThis.attr('title'));
  var testThis2 = $(this).find('a'); alert(testThis2.attr('title'));
});

Кроме того, объявите переменную локально, чтобы они нене попадают в глобальное пространство имен.

Другим вариантом является использование элемента DOM в качестве контекста для поиска:

var testThis = $('a', this);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...