以一种优雅的方式停止jQuery链接
Stop jQuery chaining in an elegant way
首先,我有点困惑,我不能在SO上立即找到答案。这个问题是关于代码风格的。
考虑一个例子:
$('input[type=text]').on('click', doSomething);
如果页面上没有输入会发生什么?这个选择器的结果似乎是null
,我们得到一个错误。
var inputs = $('input[type=text]');
if (inputs) {
inputs.on('click', doSomething);
}
我喜欢jQuery,我希望这个解决方案能有一个更优雅、更简短的形式。
这个问题的原因是prototype.js
包含在一个页面上的三方脚本。抱歉,我应该在发布SO
jQuery选择器总是返回一个jQuery对象,你永远不会得到null。
$('#Not exist!').attr('foo', 'foo'); //no error, returns jQuery
不像document.getElementById
:
document.getElementById('Not exist!') == null
选择器实际上不返回null
,如果它没有找到匹配,这是故意的,所以链接不会中断。这符合jQuery的"写得少,做得多"的座右铭。
var doSomething = function(){};
$('input[type=text]').on('click', doSomething); //No error
//...because this:
var obj = $('input[type=text]'); //is a jQuery object, even
//though there are no <input> elements
console.dir(obj); //Inspect the console. you get: jQuery.fn.jQuery.init[0]
我希望这有意义。您可以在示例中简单地执行前者:
$('input[type=text]').on('click', doSomething);
没有错误,只是一个空对象。你可以用
$('input[type=text]').on('click', doSomething);
我希望这行得通…
$('input[type="text"]').on('click', doSomething);
相关文章:
- 用DRY方式Javascript/JQuery动态替换HTML
- 可以't以编程方式关闭jQuery移动弹出窗口中的可折叠部分
- 无法以编程方式打开 jQuery Mobile PopUp
- 如何以编程方式了解jQuery版本
- 如何以正确的方式在jQuery中声明变量
- Internet Explorer 11 根据开发人员工具是否打开而以不同的方式处理 jQuery
- 以通用方式使用 Jquery $.ajax() 访问 json 对象
- 以编程方式在 jQuery 日期选择器上设置多个日期
- 以编程方式更改 jQuery File Upload (blueimp) 的预览最大宽度/高度
- 使用 jQuery 延迟对象以串行方式处理 jQuery 集合/数组
- 带有滚动条和列对齐方式的 Jquery 弹出窗口
- 如何以编程方式展开 Jquery 滑块面板
- 是否可以通过HTML的方式在jQuery中从C#/Razor中获取数据
- 以编程方式更改jquery ui日期选择器
- 以编程方式获取Jquery移动版本
- 如何以更精简的方式编写jQuery代码?
- 模块化的方式使用jQuery选择器
- 识别更好的方式获得jQuery菜单栏的功能
- 以一种优雅的方式停止jQuery链接
- 如何以最佳方式在jquery中生成条件