JQuery-存在css类元素的测试.长度不'不起作用

JQuery - Test for a css class element exists. .length doesn't work

本文关键字:不起作用 测试 css 存在 元素 JQuery-      更新时间:2023-09-26

我需要检查HTML中是否存在css类的元素。我在谷歌上搜索过这里,通常的答案是使用.length>0。

但这行不通。我得到一个"预期对象"错误。非常感谢您的帮助。

<script type="text/javascript">
  if ($(".deleteLink").length != 0) 
  {
    $(".deleteLink").click(function () { return confirm('some message?'); });
  }
</script>

.deleteLink是一个css类,它属于可能存在也可能不存在的标记。我得到了条件部分的错误。

我是不是错过了什么??因为似乎每个人都说要使用.length…

检查length是正确的方法。你的代码还有其他问题。您可能忘记包含jQuery了吗?有什么东西在敲打$吗?在比IE更好的环境中运行它,可以获得更有意义的错误消息。

还有一些小技巧。if ($(...).length)就足够了,因为0是伪造的,不需要进行比较。此外,在使用jQuery操作元素之前,您不需要检查元素是否存在(如果它是轻量级的,比如只附加一个事件处理程序)。处理一个空的jQuery结果没有任何作用。

为什么这个代码可以

如果加载了jQuery,并且$是它的别名(这是默认值),那么脚本不应该抛出错误。

你也可以简单地写:

$(".deleteLink").click(function(){ return confirm('some message?'); });

因为如果选择器找不到任何元素,则不会将事件处理程序分配给任何元素。

可能存在的问题&解决方案

您面临的问题是以下之一:

  • jQuery未加载,或者
  • $不是jQuery的别名

要解决第一个问题,只需在这部分代码之前加载jQuery。要解决第二个问题,您可以简单地使用jQuery而不是$

如何改进代码

另一种可能性是,在执行代码时,元素不可用。如果不动态加载,则可以在DOM就绪时执行代码:

jQuery(function(){
    jQuery(".deleteLink").click(function(){ return confirm('some message?'); });
});

这是您已经收到的答案的总和。

标题中的标签应该是这样的:

<head>
  <script src='http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script>
  <script>
    $(function() {
        $(".deleteLink").click(function () { return confirm('some message?'); });
    });
  </script>
</head>
  • 在使用jquery库之前先加载它
  • $(function(){});只保证只有在文档准备就绪(元素已加载)时才运行脚本
  • 不需要"if"语句,如果找不到元素,则click事件将不附加到任何元素