我只是花了"几个小时"在以下场景中:(全部返璞归真)
$('#typo').bind('click' etc ...
我在选择器中有一个错别字,但 jQuery 解决了
$('#funny something out there').bind(...
没有任何警告。
是否可以告诉jQuery在你的选择器什么也没得到时引发错误?
像这样:
$('#typo', alert('Stupid, nothing here! like '+ '#typo))
编辑
我反对我:
$('#typo', alert('Stupid, nothing here! like '+ '#typo))
不是解决方案。我必须知道错误在哪里才能扩展选择器
您可以使用
以下代码片段:
已更新以处理上下文
演示
jQuery.debug = true;
$ = function (selector, context) {
if (jQuery.debug && typeof selector === "string" && !jQuery(selector, context).length)
throw new Error("No element found!");
return jQuery.apply(this, arguments);
};
var element = $('#typo');
if (element.length > 0) {
// element exists
}
除此之外,您必须修改jQuery源代码才能获得该行为。
jquery 选择器返回一个 DOM 元素数组,所以如果你检查它的长度,如果它大于 0,它就会找到一些东西,如果它等于 0,它没有
if($("selector").length > 0) found;
您可以将返回的 DOM 元素的长度用作 falsy 并抛出一个新error
,如下所示:
var el = '#el';
if ($(el).length){
// Do Stuff
} else {
throw new Error("Element "+el+" Doesn't Exist");
}
或
// Ignores Empty Selector
if ($('#el').length){
// Do Stuff
}
我希望这有帮助!