jQuery и .length> 0 - PullRequest
       1

jQuery и .length> 0

3 голосов
/ 01 апреля 2011
var sd = jQuery(".bla");
if (sd.length>0){

}

Есть ли какой-нибудь более крутой способ написания этого кода?Я хочу, чтобы какой-то код выполнялся, только если есть классы с именем bla.Я знаю, что могу использовать каждый, но я не хочу, и я знаю, что могу делать что-то вроде sd.action(), но я не хочу.

Ответы [ 6 ]

5 голосов
/ 01 апреля 2011

Я не уверен, насколько это «круче», но просто:

if ($('.bla').length) {
    // Do stuff
}

сделает свое дело.

Редактировать : Если вам нужно повторно использовать селектор после проверки, вы все равно можете использовать тот же синтаксис:

var sd = $(".bla");

if (sd.length) {
    // Do stuff
}
3 голосов
/ 01 апреля 2011

Чтобы код выглядел немного "круче", если вы не хотите использовать длину и т. Д.

jQuery.fn.extend({
    exists: function() {
      return this.length !== 0;
    }
});

if (jQuery(".bla").exists()) {
  console.log('found');
}
2 голосов
/ 01 апреля 2011

Честно говоря, это вполне приемлемый и быстрый способ (без вызовов функций) делать то, что вы хотите. Я делаю подобные вещи все время. Даже использование $().each немного медленнее, поскольку требует вызова функции, хотя на самом деле не делает ничего.

Относительно другого ответа здесь, который также является правильным: выполнение $('.bla') более одного раза также будет медленнее. Если вы думаете, что можете использовать $('.bla') позже, лучше сохранить его в переменной, как у вас в коде. Это позволяет избежать повторного вызова jQuery и позволяет браузеру позаботиться о сборке мусора.

Надеюсь, это имеет смысл! :)

1 голос
/ 01 апреля 2011

Нет.

Не думаю, что есть что-то круче. (ТАК не позволю мне просто ответить на вопрос с Нет)

1 голос
/ 01 апреля 2011

Вы можете использовать .size ()

$ (". Бла"). Размер ()> 0

http://api.jquery.com/size/

1 голос
/ 01 апреля 2011

"Самый крутой" способ сделать такой взгляд (на мой взгляд) -

if ( $('.bla').length > 0 ) {
    // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...