Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery和选择器:如何确保元素I';我在找什么?_Javascript_Jquery_Knockout.js - Fatal编程技术网

Javascript jQuery和选择器:如何确保元素I';我在找什么?

Javascript jQuery和选择器:如何确保元素I';我在找什么?,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,我不是一个经验丰富的JavaScript开发人员(不过我对Ruby了解很多),到目前为止,当我不得不实现一些JS行时,使用jQuery和hack就足够了 就我所理解的jQuery而言,它并不假设HTML元素真的存在,但它只是执行一个查询,如果有一个匹配的元素(或多个),那么就用它完成一些事情。这适用于可能希望对页面上的某些元素(可能存在或不存在)应用某些操作的通用代码,但当涉及到特定逻辑时,这是一个问题 这是什么意思?让我举个例子 假设我有一个页面,其中包含一个HTML元素(ID为“#my_元素

我不是一个经验丰富的JavaScript开发人员(不过我对Ruby了解很多),到目前为止,当我不得不实现一些JS行时,使用jQuery和hack就足够了

就我所理解的jQuery而言,它并不假设HTML元素真的存在,但它只是执行一个查询,如果有一个匹配的元素(或多个),那么就用它完成一些事情。这适用于可能希望对页面上的某些元素(可能存在或不存在)应用某些操作的通用代码,但当涉及到特定逻辑时,这是一个问题

这是什么意思?让我举个例子

假设我有一个页面,其中包含一个HTML元素(ID为“#my_元素”)。对于这个页面,我必须运行一些JS代码,并且我必须确保它找到这个元素并对其执行我想要的操作

使用jQuery执行此操作时,我只需执行类似于
$(“#我的_元素”)的操作。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在不了解这些变化将产生的影响的情况下缓慢地改变事情并不重要。