如何记录不存在的元素

时间:2017-01-15 18:03:06

标签: javascript jquery html logging

团队在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;
&#13;
&#13;

在开发期间,我想记录$('#bar')调用的#bar元素不存在。是否有可能扩展jQuery?我想输出类似的东西:

  

选择器#bbar不存在

使用Jquery 3.1版。 我看了JQuery events on non present elements,但我不想改变每个电话。我想通过扩展jQuery来记录非现有元素。

1 个答案:

答案 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;
  }
}($),$);