Объекты jQuery не работают - PullRequest
2 голосов
/ 16 августа 2010

Когда я сохраняю объект jQuery в переменной, например:

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

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

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

$myObject.html(data);

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

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

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

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

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

Ответы [ 5 ]

6 голосов
/ 16 августа 2010

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

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

(Это сокращение для метода jQuery .ready().)

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

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

1 голос
/ 16 августа 2010

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

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

1 голос
/ 16 августа 2010

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

1 голос
/ 16 августа 2010

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

В результате вы получаете объект jQuery, который не нашел элементов.Переместите элемент script так, чтобы он был после div. Непосредственно перед конечной меткой для тела - хорошее место.

0 голосов
/ 18 августа 2010

Хорошо, спасибо всем за это.Я получил решение.

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

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

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

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

Я заключил код между тегами в .ready(), вот так:

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

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

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

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