【问题标题】:jQuery .click() not working properly [duplicate]jQuery .click() 无法正常工作 [重复]
【发布时间】:2015-05-19 03:49:16
【问题描述】:

我查看了其他一些关于 .click 功能不起作用的 stackoverflow 问题,但似乎没有一个对我有帮助。我有我的 jquery 库的导入。

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

这是我的 jquery,我不确定为什么这不起作用。我有它,所以它会等到页面加载后尝试运行。我在那个元素上有这个类,但它没有注册点击。

$(document).ready(function() {
            $('nav.product-description-nav ul li a').click(function() {
                $(".product-description-nav ul").find($('li a.active-product-selection')).removeClass('active-product-selection');
                $(this).addClass('active-product-selection');
            });
        });

这是我的导航,我正在尝试添加类并在单击时将其删除。

<nav class="product-description-nav">
    <ul>
        <li><a href="#" class="active-product-selection">Overview</a></li>
        <li><a href="#">Options</a></li>
        <li><a href="#">Downloads</a></li>
        <li><a href="#">Request A Quote</a></li>
    </ul>
</nav>

我总是在使用 jquery 时遇到问题,并且我认为我引用了所有内容,如果我将该语句添加到单击调用的函数中,我知道删除类有效,但我不想在 a 元素中包含 onclick 函数。我的语法错了还是我引用了 jquery 库错误?

这是我的问题的答案

$(document).on('click','.product-description-nav a',function(){
            $(".product-description-nav a").removeClass('active-product-selection');
            $(this).addClass('active-product-selection');
        });

【问题讨论】:

  • 删除你的一个导入
  • 您包含了两个不同版本的 jQuery。没有serious precautions and care,这将无法正常运行(或根本无法运行)。
  • 尽量不要嵌套得那么难。给 a 或 li 一个类并将其用作选择器。删除顶部额外的 jQuery 包含。
  • 一旦解决了这个问题,你的find() 就不能工作了——你正在寻找li 中的li
  • Iv 删除了所有导入,除了 jquery 的 google 导入并且没有工作。 Iv 还更改了 find 函数以查看 ul 而不是 ul li,但这也不起作用。

标签: javascript jquery html addclass removeclass


【解决方案1】:

您并不总是需要整个层次结构。您可以简单地从nav 中的所有a 标记中删除该类,然后将该类添加回this

$(document).ready(function() {
  $('nav.product-description-nav a').click(function() {
    $("nav.product-description-nav a").removeClass('active-product-selection');
    $(this).addClass('active-product-selection');
  });
});
.active-product-selection {
  color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<nav class="product-description-nav">
  <ul>
    <li><a href="#" class="active-product-selection">Overview</a>
    </li>
    <li><a href="#">Options</a>
    </li>
    <li><a href="#">Downloads</a>
    </li>
    <li><a href="#">Request A Quote</a>
    </li>
  </ul>
</nav>

【讨论】:

  • 我尝试过使用它,但它仍然不适合我。 php include 语句将我的导航调用到我的页面中是否重要?
  • 不一定。以后是否通过 Javascript 添加元素很重要。由于此处的示例有效,因此展示一个具有正确 JS 且 有效的示例会很有帮助。
  • 稍后会添加。元素是在正文加载之后添加的,因为我根据 url 参数添加它们并使用 jquery .load() 加载它们我无法展示。我把它归结为基础
  • “基础”,除了“在正文加载之后添加它们”的部分,这会显着改变事情。如果在调用$('nav.product-description-nav a').click(function() { 时元素不存在,则永远不会安装单击处理程序。没有什么可以安装它。您可以通过调用 $(document).on('click', 'nav.product-description-nav a', function()... 来解决此问题。仍在猜测,因为我们仍然看不到任何实际演示问题的代码。
  • 甜蜜! $(document).on() 函数有效。我从来没有使用过这个,所以一旦文档包含元素,on 函数会运行吗?
猜你喜欢
  • 2011-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-09
相关资源
最近更新 更多