Как проверить, не определена ли переменная, выдать ошибку, показывающую, какая переменная? - PullRequest
0 голосов
/ 03 марта 2012

Я пытаюсь посмотреть, определена ли переменная / есть ли в ней фактический объект, и если нет, покажите мне, в какой переменной ее нет.

var $a= $('.a'),
    $b= $('.b'),
    $c= $('.c');

if ( $a, $b, $c ) /* maybe use .length? and if so, can I use it like this 
                   * ($a, $b, $c).length == 0 ? but like, I need to check every variable once alone! when $a is 3 times present, do not stop here, go on the $b and check if that is == 0... */
  alert('No' + $showMeWhichVariable + ' found');

Я надеюсь, вы понимаете, что я пытаюсьделать.

заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 03 марта 2012

Переменные не будут «неопределенными». При вызове с помощью селектора функция $() всегда будет возвращать объект jQuery, а свойство .length указывает, сколько элементов соответствует селектору - если ни один из них не соответствует .length, будет 0.

Ответ elclanrs показывает, как использовать цикл для проверки соответствия каких-либо элементов вашим трем селекторам, но при условии, что у вас уже есть переменная, такая как $a, которая была создана с помощью $a = $(".a"), тогда вы можете проверить, является ли объект jQuery ссылка на эту переменную пуста следующим образом:

if ($a.length === 0) {
    // no elements matched, so do something
}

Обратите внимание, что вы можете вызывать методы jQuery для пустого объекта jQuery без получения ошибки, поэтому что-то вроде:

$a.hide();

Скрывает все элементы, которые соответствуют селектору, используемому для создания $a, но если элементы не соответствуют (.length===0), ничего не происходит - вредных эффектов нет. Вам не нужно сначала проверять .length.

0 голосов
/ 03 марта 2012
var object ={};
object['$a'] = $('.a');
object['$b'] = $('.b');
object['$c'] = $('.c');

$.each(object, function(key,value){
    if(!object[key]) alert("No "+key+" Found");
});
0 голосов
/ 03 марта 2012
// You can just loop and check :

var elms = ['.a', '.b', '.c'],
    errors = '';

for (var i = 0, len = elms.length; i < len; i++) {
    if (!$(elms[i]).length) {
        errors += '<li>' + elms[i] + 'doesn\'t exist</li>';
    }
}

$('ul').append(errors).appendTo('body');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...