JQuery - тест для элемента класса css существует.длина не работает - PullRequest
0 голосов
/ 15 февраля 2012

Мне нужно проверить, существует ли в моем HTML элемент с классом css.Я гуглил и искал здесь, и общий ответ - использовать .length> 0.

Но это не работает.Я получаю ошибку "Ожидается объект".Любая помощь приветствуется.

<script type="text/javascript">
  if ($(".deleteLink").length != 0) 
  {
    $(".deleteLink").click(function () { return confirm('some message?'); });
  }
</script>

.deleteLink - это класс CSS, который принадлежит тегу, который может присутствовать или не присутствовать.Я получаю сообщение об ошибке условной части.

Я что-то пропустил ??Потому что кажется, что все говорят, чтобы использовать .length ...

Ответы [ 3 ]

3 голосов
/ 15 февраля 2012

Проверка length - правильный путь.Что-то не так с вашим кодом.Возможно, вы забыли включить jQuery?Что-то стучит $?Запустите его в чем-то лучше, чем IE, чтобы получить более значимое сообщение об ошибке.

Также несколько советов.if ($(...).length) достаточно, потому что 0 ложно, сравнение не нужно.Кроме того, вам не нужно проверять, существуют ли элементы, прежде чем манипулировать ими с помощью jQuery (если это что-то более легкое, например, просто присоединение обработчика событий).Манипулирование пустым результатом jQuery ничего не делает.

1 голос
/ 15 февраля 2012

Почему этот код в порядке?

Ваш скрипт не должен выдавать ошибку, если загружен jQuery и $ является его псевдонимом (по умолчанию).

Также вы можете просто написать:

$(".deleteLink").click(function(){ return confirm('some message?'); });

потому что обработчик событий не будет назначен ни одному элементу, если селектор не найдет его.

Возможные проблемы и решения

Проблема, с которой вы столкнулись, является одной из следующих:

  • jQuery не загружен или
  • $ не является псевдонимом jQuery.

Чтобы решить первое, просто загрузите jQuery перед этой частью кода. Для решения второго вы можете просто использовать jQuery вместо $.

Как улучшить код

Еще одна возможность состоит в том, что элемент недоступен во время выполнения кода. Если вы не загружаете его динамически, вы можете просто выполнить код, когда DOM будет готов:

jQuery(function(){
    jQuery(".deleteLink").click(function(){ return confirm('some message?'); });
});
0 голосов
/ 15 февраля 2012

Это сумма ответов, которые вы уже получили.

Теги в вашем заголовке должны выглядеть примерно так:

<head>
  <script src='http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script>
  <script>
    $(function() {
        $(".deleteLink").click(function () { return confirm('some message?'); });
    });
  </script>
</head>
  • загрузить библиотеку jquery перед ее использованием
  • $ (function () {}); просто гарантирует, что скрипт запускается только тогда, когда ваш документ готов (элементы загружены
  • нет необходимости в этом операторе 'if', если элементы не найдены, событие click просто прикрепится к элементам.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...