Javascript jQuery和选择器:如何确保元素I';我在找什么?
我不是一个经验丰富的JavaScript开发人员(不过我对Ruby了解很多),到目前为止,当我不得不实现一些JS行时,使用jQuery和hack就足够了 就我所理解的jQuery而言,它并不假设HTML元素真的存在,但它只是执行一个查询,如果有一个匹配的元素(或多个),那么就用它完成一些事情。这适用于可能希望对页面上的某些元素(可能存在或不存在)应用某些操作的通用代码,但当涉及到特定逻辑时,这是一个问题 这是什么意思?让我举个例子 假设我有一个页面,其中包含一个HTML元素(ID为“#my_元素”)。对于这个页面,我必须运行一些JS代码,并且我必须确保它找到这个元素并对其执行我想要的操作 使用jQuery执行此操作时,我只需执行类似于Javascript jQuery和选择器:如何确保元素I';我在找什么?,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,我不是一个经验丰富的JavaScript开发人员(不过我对Ruby了解很多),到目前为止,当我不得不实现一些JS行时,使用jQuery和hack就足够了 就我所理解的jQuery而言,它并不假设HTML元素真的存在,但它只是执行一个查询,如果有一个匹配的元素(或多个),那么就用它完成一些事情。这适用于可能希望对页面上的某些元素(可能存在或不存在)应用某些操作的通用代码,但当涉及到特定逻辑时,这是一个问题 这是什么意思?让我举个例子 假设我有一个页面,其中包含一个HTML元素(ID为“#my_元素
$(“#我的_元素”)的操作。addTooltip()
,这似乎很好:当我将鼠标悬停在元素上时,会显示一个工具提示
假设几个月后,我已经完全忘记了这个JS脚本,我将元素的ID更改为其他内容。会发生什么?没有什么。我不会注意到丢失的工具提示的问题,直到我无意中被它绊倒
因此,我想知道如何确保我的JS被真正应用,这意味着:找到所需的元素,对它们进行处理,等等
jQuery的哲学是否是这方面的“错误”工具?我需要另一个框架吗?也许是更复杂的模式,比如MVC?我以前玩过KnockoutJS,这似乎更好,因为它使用
数据绑定
属性直接绑定到元素,所以它比jQuery更适合代码。提到的注释总是在对返回结果执行操作之前检查.length
属性(这可能是最好的答案),但在实际语法错误的情况下,您所说的“什么也没发生”并不总是正确的
如果您在其他浏览器(firebug等)中使用Chrome developer工具或类似工具,您应该在“控制台”中看到错误
您还可以打开javascript调试以获取更多信息。当您对空值(jQuery集合)调用“addTooltip()”时,您将看到控制台中弹出一个错误,并且可能在调试器中出现异常
这是在客户端javascript中查找错误的最简单方法之一。您可以添加一个特定的插件来验证非零长度集合的存在,并在链中使用它:
(function ($) {
$.fn.verify = function() {
if (this.length) {
return this;
}
else {
console.log("No elements found with supplied selector.")
}
}
})(jQuery);
$("#myElement").verify().addTooltip();
当然,这依赖于
verify()
手动应用插件,据我所知,jQuery中没有内置错误报告功能,可以自动启用无效选择器的日志记录,或报告返回零元素的选择器。最好的方法是在执行代码a之前设置一个保护条件,检查此元素是否存在nd如果检查失败,则抛出。确保元素存在且带有$(“#my_元素”).length
。如果没有,您可能会发出警告。您想知道插件是否未应用或无法应用?简短的回答是,在不检查其效果的情况下,不要随意更改内容。记录代码并参考它。如果您保持w在不了解这些变化将产生的影响的情况下缓慢地改变事情并不重要。