Почему jQuery не бомбит, если ваш объект селектора недействителен? - PullRequest
72 голосов
/ 14 сентября 2010

Недавно использовал какой-то код в стиле

$("#divMenuContainer:visible").hide("explode");

Однако после некоторого времени, потраченного на то, чтобы заставить его работать, я понял, что мой селектор ссылается на несуществующий div.

Результатом запроса было то, что он не был выполнен.

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

Не пытаться критиковать, просто пытаться понять.

Ответы [ 13 ]

0 голосов
/ 14 сентября 2010

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

0 голосов
/ 14 сентября 2010

Это просто имеет смысл для меня ... Если ваш селектор не соответствует ни одному элементу, вы все равно можете вызывать все обычные функции-прототипы jQuery без генерации ошибок!В худшем случае вы получите «пустой» набор jQuery, в котором ваши изменения не применяются.

0 голосов
/ 14 сентября 2010

Я думаю, что это, вероятно, связано с тем, что ваш селектор:

$("#divMenuContainer:visible")

Под обложками возвращает объект jQuery, содержащий ряд возможных совпадений. Функция Hide затем выполняется для каждого из них. Я полагаю, что исключение исключения в этом случае имеет определенный смысл, поскольку у вас есть список с нулевыми записями, а не возвращение нулевого значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...