【问题标题】:JQuery - Test for a css class element exists. .length doesn't workJQuery - 测试是否存在 CSS 类元素。 .length 不起作用
【发布时间】:2012-02-15 15:27:25
【问题描述】:

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

但这不起作用。我收到“预期对象”错误。非常感谢任何帮助。

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

.deleteLink 是一个 CSS 类,属于可能存在或不存在的标签。我在条件部分遇到了错误。

我错过了什么吗?因为好像大家都说要用.length...

【问题讨论】:

  • 您是在加载 jQuery 之前运行该脚本,还是在加载另一个 JS 框架(如 Prototype),它可能会窃取 $ 变量?
  • 我同意瑞恩的观点。 “Object expected”通常是 JQuery 未加载或加载不正确的标志。您的 HEAD 标记中是否有对 JQuery 的引用?
  • 哇,谢谢 Ryan 和其他人……我现在感觉很蠢。有问题的 Javascript 位于加载到两个不同页面的 UserControl 上,其中第二个页面没有加载 JQuery。非常感谢您的帮助,对于浪费大家的时间我深表歉意。我对脚本很陌生,恐怕它会显示出来。希望我能给每个人“答案”...

标签: javascript jquery css jquery-selectors


【解决方案1】:

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

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

【讨论】:

  • 好的,我删除了我的答案,因为它可能不是最好的,我投票给了这个。
  • 谢谢。事实上,我忘记了包含 JQuery,因为它是一个加载在两个不同页面上的可重用控件,一个有它,另一个没有。非常感谢。
【解决方案2】:

为什么这段代码没问题?

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

你也可以简单地写:

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

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

可能的问题及解决方案

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

  • jQuery 没有加载,或者
  • $ 不是 jQuery 的别名。

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

如何改进代码

另一种可能性是在执行代码时该元素不可用。如果你不动态加载它,你可以在 DOM 准备好时执行代码:

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

【讨论】:

    【解决方案3】:

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

    标题中的标签应如下所示:

    <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 库
    • $(函数() {});只是保证脚本仅在您的文档准备好时运行(元素已加载
    • 不需要那个 'if' 语句,如果没有找到任何元素,点击事件将只附加到任何元素。

    【讨论】:

      猜你喜欢
      • 2013-11-11
      • 2019-03-26
      • 1970-01-01
      • 2021-03-04
      • 2018-08-01
      • 2011-12-20
      • 1970-01-01
      • 2022-01-14
      相关资源
      最近更新 更多