jQuery 中是否有内置支持进行基本断言检查,主要是“返回元素的预期数量”之类的内容。
例如,我可能有一个像这样的简单声明:
$("#btnSignup").click(function() {
return validateForm();
);
现在有很多理由$("#btnSignup")
可能不会恰好返回 1 件商品:
- 您输错了按钮 ID 名称
- 有人错误地重命名了它
- 页面上不存在
- 有两个元素错误地具有该 id
- 您正在使用 ASP.NET MVC 并且意外地为按钮生成了 HTML
HtmlHelper.Button(...)
代替HtmlHelper.Submit()
. The Button(...)
方法不会为按钮元素创建 ID。
现在,在这种情况下(以及许多情况下),除非从选择器返回确切的一项,否则我的应用程序根本无法工作。所以我总是想被告知如果$("@#btnSignup")
不完全返回 1 项。那么我该怎么做呢?如果这是一个例外或者最好是一个警报框,我很好 - 所以如果我没有在调试器中运行,那么我可以被告知。
我正在寻找类似这样的语法 - 其功能与 .NET 类似Single() http://www.hookedonlinq.com/SingleOperator.ashx扩展方法。
$("#btnSignup").assertSingle().click(function() {
return validateForm();
);
or
$("#btnSignup").assertSize(1).click(function() {
return validateForm();
);
我个人希望这段代码始终运行并告诉那里的任何人存在问题。它显然不是性能问题 http://www.codinghorror.com/blog/archives/001218.html永远运行这个额外的代码。在这种情况下,如果我的代码被破坏#btnSignup
不存在。
我确信这个问题已经被解决了,并且有很多解决方案 - 但有人可以指出其中的一些吗?
我没有看到 jQuery 中内置任何东西,我想知道最好的插件是什么。我宁愿在页面上有一些东西可以继续“监视”我并告诉我是否有问题。我什至不会反对对错误报告服务进行 AJAX 调用。
看起来没有任何内置的东西。但编写扩展并不太难:
$.fn.assertSize = function(size) {
if (this.length != size) {
alert("Expected " + size + " elements, but got " + this.length + ".");
// or whatever, maybe use console.log to be more unobtrusive
}
return this;
};
用法与您在问题中建议的完全一样。
$("#btnSignup").assertSize(1).click(function() {
return validateForm();
);
请注意,在当前形式下,即使断言失败,函数也会成功返回。您链接的任何内容仍将被执行。使用return false;
代替return this;
停止链的进一步执行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)