2012-04-05 3 views
1

Может кто-нибудь, пожалуйста, сообщите, где я иду не так со следующим? Я хочу, чтобы система предупреждала текст привязки для каждого элемента списка в цикле, но не могла подумать, как структурировать синтаксис этого «этого»?Как использовать «this» из jQuery.each() в селекторе?

$('.jsGrid ul li').each(function(index) { 
    alert(index + ': ' + $('this .overlayContent a').text()); 

}); 

Приветствие Пол

+0

предупреждения (индекс + ':' + $ ('overlayContent а', это) .text().); – mpm

+0

Пожалуйста, разместите свой html - я попытался угадать его здесь: http://jsfiddle.net/mplungjan/Jf7ub/ – mplungjan

ответ

1
alert(index + ': ' + $('.overlayContent a',this).text()); 
+0

Совместим ли мой HTML с селекторами? Это не работает: http://jsfiddle.net/mplungjan/Jf7ub/ – mplungjan

+0

попробуйте следующее: http://jsfiddle.net/camus/tA3Dn/ – mpm

+0

Но это не то, что вы отправили в качестве ответа ?! – mplungjan

1

this является переменным и не будет признан внутри строки. Построить объект JQuery вокруг него и использовать find, чтобы получить якорный элемент, который вы ищете:

alert(index + ': ' + $(this).find('.overlayContent a').text()); 

Если вы ищете $("this .overlayContent a") - JQuery будет искать элементы, построенные, как это:

<this> 
    <div class='overlayContent'><a>Some text here</a></div> 
</this> 
+0

Почему это не работает? Неверный html? http://jsfiddle.net/mplungjan/Jf7ub/ – mplungjan

+0

Что значит «работать»? Что он должен делать? – Dennis

0
$('.jsGrid ul li').each(function(index) { 
    alert(index + ': ' + $(this).find('.overlayContent a').text()); 
}); 
0

Вы не можете использовать это ключевое слово, как это. вместо того, чтобы использовать эту

$('.jsGrid ul li').each(function(index) { 
    alert(index + ': ' + $('this').find('a').text()); 
}); 

или Cando как этот

$('.jsGrid ul li').each(function(index) { 
    alert(index + ': ' + $('this').children().text()); 
});