jQuery - проверка наличия элемента - какой путь лучше? - PullRequest
0 голосов
/ 23 декабря 2011

У меня есть элемент с названием link, который мне нужно проверить.

В настоящее время я делаю это:

// routine
if ( link.length == 1 && !link.is( ".toggle_popover" ) ) {
    self.panelTrans();
    } 

Мне любопытно по поводу моего чека на ссылку

Я пробовал следующее:

if (link) ... 
if (!link)...
if (link.length == 1) ...
if (link.length != 0) ...

Проблема в том, что ссылка также может быть пустым объектом = [], и в этом случае я не хочу, чтобы моя процедура запускалась.

Каким способом лучше всего это сделать? Прямо сейчас я придерживаюсь link.length == 1

Спасибо за помощь!

UPDATE

ссылка следующая:

var link = $( self.findClosestLink(event.target) )

findClosestLink: function (ele) {
      var self = this;
      while (ele){
          if (ele.nodeName.toLowerCase() == "a"){
              break;
              }
           ele = ele.parentNode;
           }
      return ele;
      }

Он взят из скрипта jQuery Mobile и проверяет, когда пользователь нажимает на экран, если есть родительский элемент ссылки. Я использую это для запуска своей собственной подпрограммы в JQM и хочу убедиться, что я не запускаю ни одного потраченного вызова функции. Вот почему я проверяю ссылку. В Firebug я иногда заканчивал тем, что функция запускалась на пустом объекте [], который я не хочу запускать.

Поэтому мой вопрос о том, как проверить ссылку

Ответы [ 4 ]

1 голос
/ 23 декабря 2011

Если link является объектом jQuery, просто используйте:

if (link.length)

Нет необходимости в явном сравнении, если только вы не хотите быть уверенным, что точно один соответствующий элемент.

Значение .length будет равно нулю, которое при использовании в качестве логического значения оценивается как ложное, или положительное, оценивается как истинное.

0 голосов
/ 23 декабря 2011
if($('#link').length){
//its available
}

Это правильный путь.Это также описано на домашней странице jQuery.Это самый быстрый способ проверить, доступен ли элемент!

0 голосов
/ 23 декабря 2011
if ( link.length)
{
  // element exist
}

Предполагая, что ссылка является объектом jquery

Если ссылка является идентификатором элемента,

 if($("#link").length)
 {
   // element exist
 }
0 голосов
/ 23 декабря 2011

я думаю, что лучший способ (я полагаю, вы говорите об объекте jQuery)

var link = $('#link');

link.length === 1

с добавленным =, поэтому нет приведения типов. Если вы используете селектор id, это идеально, так как селектор возвращает только один элемент (это, конечно, означает, что ваши идентификаторы уникальны на вашей странице). если вы должны проверить, существует ли хотя бы один элемент в коллекции (вы используете селектор class), конечно, используйте

collection.length > 0 
...