2009-06-02 2 views
2

Это может показаться немного тупой, но не могли бы вы указать, почему в следующем скрипте «firstValue» неопределен и «SecondValue» как это необходимо, т.е. 4.Помощь требуется на JQuery найти функцию

<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> 

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

ответ

5

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

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

+0

Редактирование сделал мой ответ не является правильным. $ (this) имеет значение, хотя без элементов DOM в нем, но «это» не определено (и это причина ошибки, которую получает OP) –

+0

Я не изменил эту формулировку. Я изменился с «этого» на «$ (это)», поскольку эти два - разные вещи. –

+0

Спасибо, чувак, я знал, что делаю что-то немое. – theraneman

0

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

+0

Я верю $(). Find(); тоже может работать ...? –

0

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

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

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

Это потому, что в том числе типа элемента позволит JQuery для поиска DOM в более быстром способе.

0

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

0

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

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

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

aha.apply(document); 
Смежные вопросы