团队在Web应用程序中进行了大量修改。 Sometines我发现了像这样的jquery代码:
$('#foo').doSomething();
但是当我在HTML中搜索id="foo"
时,它就不存在了。
为了帮助我们并防止出现错误,我希望console.log
将每个非现有元素转发到$()
函数。
以下是一个例子:
//I want to hide this text.
$('#foo').fadeOut(5000);
//This id #bar does not exist.
$('#bar').fadeOut(5000);
//I want to console.log that #bar does not exist

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="foobar">
I don't want to hide this text.
</div>
<div id="foo">
I want to hide this text.
</div>
<div id="bbar">
This layer is named bbar and not bar.
</div>
&#13;
在开发期间,我想记录$('#bar')
调用的#bar元素不存在。是否有可能扩展jQuery?我想输出类似的东西:
选择器
#bbar
不存在
使用Jquery 3.1版。 我看了JQuery events on non present elements,但我不想改变每个电话。我想通过扩展jQuery来记录非现有元素。
答案 0 :(得分:2)
你可以像https://jsfiddle.net/jm7LtLqe/1/
那样重载$函数$ = function(jQuery) {
return function(pars) {
var result = jQuery(pars);
if (result.length==0) console.log('selector has no results',result.selector);
return result;
}
}($);
修改(需要ES6 Object.assign
来复制$.ajax
)等属性:
$ = Object.assign(function (jQuery) {
return function(pars) {
var result = jQuery(pars);
if (result.length==0) console.log('selector has no results',pars);
return result;
}
}($),$);