2011-04-01 3 views
3
var sd = jQuery(".bla"); 
if (sd.length>0){ 

} 

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

+3

Вы можете удалить '> 0' часть. – pimvdb

+2

. Длина очень крутая imo. красота в простоте :) – DannyLane

+2

'' 'вместо' jQuery' является более прохладным. –

ответ

5

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

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

будет делать трюк.

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

var sd = $(".bla"); 

if (sd.length) { 
    // Do stuff 
} 
+1

, если я хочу что-то сделать позже с объектами, возвращаемыми запросом, чем его медленнее. – IAdapter

1

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

if ($('.bla').length > 0) { 
    // ... 
} 
+1

, если я хочу что-то сделать позже с объектами, возвращаемыми запросом, чем его медленнее. – IAdapter

1

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

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

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

+3

Цитата с этой страницы: * «свойство .length предпочтительнее» * –

2

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

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

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

+0

Это правда - если вы собираетесь повторно использовать селектор в других частях вашего скрипта, то, безусловно, более эффективно присваивать его переменной. –

1

Nope.

Я не думаю, что есть что-нибудь более холодное. (SO Wouldnt позвольте мне ответить на этот вопрос с No)

2

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

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

if (jQuery(".bla").exists()) { 
    console.log('found'); 
} 
+0

Почему бы не использовать '> 0', сохраняет два байта. – pimvdb

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