javascript - JQuery 在无序列表中查找下一个类

标签 javascript jquery html ajax

我在我的网站上使用 JQuery/Ajax 来实现某些功能。目前,我有一个显示无序列表的左侧,每个列表元素都有一个类似 shop-thumb 的类,每当有人点击 shop-thumb 时,右侧的内容就会通过 Ajax 加载。

现在我想合并一个下一个/上一个按钮,以便用户可以单击“下一个”(从右侧),然后使用 ajax 加载下一个列表项,更改右侧的内容。

这是我正在使用的一个非常基本的版本:

<div class="thumbs">
    <ul class="products">
        <li class="shop-thumb"><a href="www.google.com/123"><img src="www.google.com/image1" /></a></li>
        <li class="shop-thumb"><a href="www.google.com/456"><img src="www.google.com/image2" /></a></li>
        <li class="shop-thumb"><a href="www.google.com/789"><img src="www.google.com/image3" /></a></li>
        <li class="shop-thumb"><a href="www.google.com/101112"><img src="www.google.com/image4" /></a></li>
        <li class="shop-thumb"><a href="www.google.com/131415"><img src="www.google.com/image5" /></a></li>
    </ul>
</div>

<div class="paginate">
    <div class="prev">Prev</div> | <div class="next">Next</div>
</div>

<div class="main">
<!-- Ajax comes in here -->
</div>

这是我在 JQuery/Ajax 调用中的内容——除了 .next click 函数之外,一切都工作正常:

<script>
jQuery(document).ready(function($){
    var defaultValue = $("ul.products li.shop-thumb a:first").attr("href");

    $(".main").load(defaultValue);

  $("ul.products li.shop-thumb a").click(function(e){
      e.preventDefault();

      var addressValue = $(this).attr("href");
    $(".main").load(addressValue);

  });

  $(".next").click(function() {
      $("ul.products").next();
      var newValue = $("ul.products .shop-thumb a").attr("href");
      $(".main").load(newValue);
  });

});
</script>

任何有关我如何实现下一个/上一个功能的帮助将不胜感激。我认为我应该使用 .next().find().nextAll

如果你不介意给我一个骨头并给我看一个例子,这样我就可以看到我在哪里以及哪里做错了。

最佳答案

您需要为当前项目添加标记才能找出下一个项目。找到下一个项目后,您只需触发该项目上的单击事件即可调用处理程序

您可以使用类似的类

jQuery(document).ready(function ($) {
    $("ul.products li.shop-thumb a").click(function (e) {
        e.preventDefault();

        var addressValue = $(this).attr("href");
        $(".main").load(addressValue);

        //remove the active class from previous item
        $("ul.products li.active").removeClass('active');
        //add the active class to the current li element
        $(this).closest('li').addClass('active');
    });

    $(".next").click(function () {
        //find the next item and trigger the click event
        $("ul.products li.active").next().find('a').trigger('click');
    });

    //default loading
    $("ul.products li.shop-thumb a:first").click();

});

关于javascript - JQuery 在无序列表中查找下一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22238447/

相关文章:

javascript - 选择标记 onchange 事件问题

javascript - 获取 HtmlDivElement 的名称

javascript - 完成步骤后,在 bootstrap Accordion 中添加 TICK 而不是 plus

jquery - 如何避免 JQuery 动画垃圾邮件?

javascript - 获取 fooTable 的正确数据值(以刻度或 unix 时间戳为单位)

javascript - iframe 中的 Youtube 视频未隐藏在 Safari 5.1 中

javascript - 显示增减金额的合计值

javascript - 如何在没有require语句的情况下使用webpack加载目录中的所有文件

javascript - 从组件外部更新已渲染的 ReactJS 组件的正确方法

javascript - Angular 怪异 : how can one object attribute change an attribute on two different objects?