Требуется помощь по функции поиска jQuery - PullRequest
2 голосов
/ 02 июня 2009

Это может звучать немного глупо, но не могли бы вы указать, почему в следующем скрипте firstValue не определено, а secondValue - по необходимости, т. Е. 4.

<div >
<input class="feedback-selected"  type="hidden" value="4" />
</div>    
<script type="text/javascript">

    var firstValue = $(this).find('.feedback-selected').val();
    var secondValue = $('.feedback-selected').val();
    alert(firstValue);
    alert(secondValue);

</script>

Я уверен, что не использую функцию поиска, как должно быть.

Ответы [ 6 ]

5 голосов
/ 02 июня 2009

this не имеет значения в вашем примере, поэтому функция find () ничего не найдет.

( это действительно только в функциях экземпляра или обработчиках событий)

1 голос
/ 02 июня 2009
0 голосов
/ 02 июня 2009

this в вашем примере не является элементом DOM, который содержит какие-либо подэлементы класса «feedback-selected», поэтому функция find не может их найти. Это может быть даже не элемент DOM.

Я хотел бы отметить, что $ (this) может быть допустимым в любом месте, которое указывает на элемент DOM. Так что, если в любое время вы вызываете функцию, вызываемую из элемента DOM, все в порядке. Это все о масштабах в этом случае. Это также будет допустимо:

function aha() {
 alert($(this).find('.feedback-selected').val());
}

aha.apply(document);
0 голосов
/ 02 июня 2009

find () ищет элементы-потомки объекта jQuery, к которому вы обращаетесь. Вы вызываете find () по результатам $ (this), что является ничем. Если вы хотите вызвать find () для документа, вам придется использовать $ (document).

0 голосов
/ 02 июня 2009

ответ Activa правильный. $("<selector>") соответствует тому, что вы пытались сделать с первым поиском. find("<selector>") предназначен для поиска в упакованном наборе, а не в качестве отправной точки.

Однако я хотел бы добавить, что лучший способ получения значения в этом случае:

var value = $("input.feedback-selected").val();

Это потому, что включение типа элемента позволит jQuery быстрее искать DOM.

0 голосов
/ 02 июня 2009

Что сказал activa ... и вы, вероятно, могли бы использовать $ (document) вместо $ (this), если вам нужно использовать .find ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...