我没有经验丰富的JavaScript开发人员(虽然我对Ruby非常了解),到目前为止,当我不得不实现一些JS系列时,似乎可以使用jQuery和hack together。 / p>
据我了解jQuery,它并不假设HTML元素真的存在,但它只是执行查询,如果是匹配元素(或许多),有些东西是用它完成的。这适用于通用代码,它可能希望将某些操作应用于页面上的某些元素(可能存在或不存在),但是当涉及到特定逻辑时,它就是一个问题。
这是什么意思?让我举个例子。
假设我有一个单一页面,其中包含一个HTML元素(ID为'#my_element')。对于这个页面,我必须运行一些JS代码,并且我必须确保它找到了这个元素,然后根据需要完成它。
使用jQuery执行此操作,我只需执行$('#my_element').addTooltip()
之类的操作,这看起来很好:当我将鼠标悬停在元素上时,会显示工具提示。
让我们假设几个月后我已经完全忘记了这个JS脚本,并且我将元素的ID更改为其他内容。怎么了?没有。我不会注意到工具提示丢失的问题,直到偶然发现它为止。
所以我想知道如何确保我的JS真正应用,这意味着:找到所需的元素,完成它们的工作等等。
jQuery的理念是"错误"这个工具?我需要另一个框架吗?也许更复杂的模式,例如像MVC这样的东西?我以前玩过KnockoutJS,看起来这可能更好,因为它使用data-bind
属性直接绑定到元素,因此它比jQuery更适合代码。
答案 0 :(得分:0)
提到的注释总是在对返回的结果执行操作之前检查.length
属性(这可能是最好的答案),但是在实际语法错误的情况下,您的语句“没有任何反应”#34 ;并非总是如此。
如果您在其他浏览器(firebug等)中使用Chrome开发者工具或类似工具,您应该会在"控制台"
中看到错误您还可以打开javascript调试以获取更多信息。当你打电话给" addTooltip()"对于null(jQuery集合),你会在控制台中看到一个错误,并且可能在调试器中出现异常。
这是在客户端javascript中查找错误的最简单方法之一。
答案 1 :(得分:0)
您可以添加一个特定的插件来验证是否存在非零长度的集合,并在链中使用它:
(function ($) {
$.fn.verify = function() {
if (this.length) {
return this;
}
else {
console.log("No elements found with supplied selector.")
}
}
})(jQuery);
$("#myElement").verify().addTooltip();
当然,这确实依赖于手动应用的verify()
插件,据我所知,没有内置于jQuery的错误报告来自动启用无效选择器的记录或报告选择器返回零元素。