2010-08-16 4 views
2

Когда я храню объект JQuery в переменной, как это:объекты JQuery не работают

var $myObject = $("div#comments"); 

... Я не могу использовать объект $ MyObject!

Это то, что я делаю, чтобы изменить HTML из DIV # комментариев:

$myObject.html(data); 

Он ничего не делает. Я уже пробовал этот путь тоже, на этот раз, чтобы выбрать элемент внутри div # комментариев:

$("div.comment", $myObject); 

Это не работает.

Я просто хочу, чтобы сохранить элемент в переменной, а затем использовать его!

Примечание: некоторые люди не ставят $ перед именем переменной, например: myObject.

+0

Вы делаете что-то еще неправильно; что должно работать –

ответ

6

Вы звоните по телефону после документ загружен?

 // This will ensure that the code doesn't run until 
    // the document has loaded 
$(function() { 
    var $myObject = $("div#comments"); 
}); 

(Это ярлык для .ready() метода JQuery в.)

Пока загружается документ, и у вас есть <div> с ID comments на странице, когда он загружается, он должен работать.

Также помните, что может быть только один элемент на странице с любым ID. Из-за этого на самом деле немного лучше (быстрее) сделать $("#comments"); вместо $("div#comments");.

+0

Разве вы не имеете в виду '$ (document) .ready (function() {// stuff});'? –

+0

@ Акай - Ну, да и нет. Это ярлык для одного и того же. : o) – user113716

+0

О, я вижу, и может кто-нибудь, пожалуйста, скажите мне, как сделать мой код похожим на код: D в комментариях. приведенный выше комментарий является обманом –

1

Вы только при условии snippits вашего кода, так что нельзя сказать наверняка, но есть вероятность, что вы работаете код в <script> элемент, который появляется перед <div> элемента и ничего не делать (например, использовать готовое событие) для задержки выполнения кода до тех пор, пока не будет существовать div.

В результате вы получаете объект jQuery, который не нашел элементов. Переместите элемент сценария так, чтобы он был после div. Just before the end tag for the body - хорошее место.

1

Синтаксис совершенно верен и должен работать. Вы динамически добавляете комментарии div? Вы должны указать alert($myObject.length), если это 0 или 1, если его 0 означает, что он никогда не был поднят.

Возможно, вам понадобится привязать заявление var до тех пор, пока дом не будет готов, загрузка окна или ваш обратный вызов ajax.

1

Ну, этот синтаксис отлично подходит, так что происходит что-то еще. Можете ли вы показать свою разметку? И что вы получите, если добавить предупреждение ($ myObject.length)? И последнее, что нужно проверить ... вы используете это внутри готового обработчика?

0

Хорошо, спасибо всем за это. У меня есть решение.

Я думал о заказе вещей, загруженных в DOM, и нашел решение. Проблема (с разметкой) было:

<div id="comments">  
    <script type="text/javascript"> 
    loadComments(params); 
    </script> 
</div> 

Код выше был написан PHP! Итак, он выполнил функцию, как только браузер прочитает код. Я уже пытался поставить скрипт в конце страницы, после того, как функция была вызвана. Функция еще не определена.

Итак, funcion loadComments должен быть выполнен после того, как div был готов и после того, как функция была определена.

Я завернул между тегами с .ready(), например:

<script type="text/javascript"> 
$(function() { 
    loadComments(params); 
}); 
</script> 

Это было отвлечение. Простите всех! Большое спасибо.

Если у вас такая же проблема, и вы не поняли, что я сделал, спросите меня. XD

Смежные вопросы