以优雅的方式停止jQuery链接

Dan*_*Dan 0 javascript jquery

首先,我有点困惑,我无法立刻找到答案.问题是关于代码风格.

考虑一个例子:

$('input[type=text]').on('click', doSomething);
Run Code Online (Sandbox Code Playgroud)

如果页面上没有输入会发生什么?此选择器的结果似乎是null,我们得到一个错误.

所以,我们必须使代码变得更大,更丑陋:

var inputs = $('input[type=text]');

if (inputs) {
    inputs.on('click', doSomething);
}
Run Code Online (Sandbox Code Playgroud)

我喜欢jQuery,我希望这个解决方案更优雅,更简洁.


UPDATE

这个问题的原因prototype.js包括在页面上的三方脚本.道歉,我应该在发布SO之前在沙盒中测试问题

gdo*_*ica 7

jQuery选择器总是会返回一个jQuery对象,你永远不会得到null.

$('#Not exist!').attr('foo', 'foo'); //no error, returns jQuery
Run Code Online (Sandbox Code Playgroud)

不像document.getElementById:

document.getElementById('Not exist!') == null
Run Code Online (Sandbox Code Playgroud)

  • 原因是jQuery` $`对象被强制化了. (3认同)