javascript - jQuery .next() 进入不正确的 Div)

标签 javascript jquery

这个基本代码片段是为了更改索引 div 的类而编写的。特别是带有 .primaryCategory 类的 div。现在这个函数运行得很好,当你点击正确的箭头时,它会进入 .next() 和 .prev() ,但是当你进入 next 超过 3 次时(因为在这种情况下只有 3 个 div),它会移动到箭头分隔线。 (仅在 .primaryCategory-leftArrow 中,一旦切换到分隔线(不应该如此),左/上一个箭头将不再转到上一个。

所以基本上我要问的是如何才能使下一个/右箭头不会继续到 .primaryCategory-leftArrow

JavaScript/jQuery 代码片段

$(".wrapper .primaryCategory-wrapper .primaryCategory-RightArrow").bind(eventtype, function(e) {
    if($("div.primaryCategory.primaryCategory-active").is(":last-child")){
        // do nothing
    }else {
        $("div.primaryCategory.primaryCategory-active").removeClass("primaryCategory-active").next().addClass("primaryCategory-active");
    }
});

$(".wrapper .primaryCategory-wrapper .primaryCategory-leftArrow").bind(eventtype, function(e) {
    if($("div.primaryCategory.primaryCategory-active").is(":first-child")){
        // do nothing
    }else {
        $("div.primaryCategory.primaryCategory-active").removeClass("primaryCategory-active").prev().addClass("primaryCategory-active");
    }
});

HTML 代码片段

        <div class="primaryCategory-wrapper">
            <!-- Single Primary Category -->
            <div class="primaryCategory">
                <!-- Primary Category Icon -->
                <img class="primaryCategory-icon" alt="primaryCategory" src="img/placeholder/primaryCategoryIcon-320x320.png">
                <!-- Primary Category Heading -->
                <h1>Lorium</h1>
            </div>
            <!-- Single Primary Category -->
            <div class="primaryCategory">
                <!-- Primary Category Icon -->
                <img class="primaryCategory-icon" alt="primaryCategory" src="img/placeholder/primaryCategoryIcon-320x320.png">
                <!-- Primary Category Heading -->
                <h1>Lorium</h1>
            </div>
            <!-- Single Primary Category -->
            <div class="primaryCategory">
                <!-- Primary Category Icon -->
                <img class="primaryCategory-icon" alt="primaryCategory" src="img/placeholder/primaryCategoryIcon-320x320.png">
                <!-- Primary Category Heading -->
                <h1>Lorium</h1>
            </div>
            <div class="primaryCategory-leftArrow"><!-- Left Primary Arrow (Mobile) --></div>
            <div class="primaryCategory-RightArrow"><!-- Right Primary Arrow (Mobile) --></div>
        </div>

最佳答案

这是因为您的 .primaryCategory-leftArrow.primaryCategory-RightArrow 位于 .primaryCategory 的同一父元素上,它们都是 sibling 。

要解决此问题,您可以从 .primaryCategory-wrapper 中移动 .primaryCategory-leftArrow.primaryCategory-RightArrow

或者您可以在 .next('selector') 上指定一个选择器,如下所示:

$("div.primaryCategory.primaryCategory-active").removeClass("primaryCategory-active").next(".primaryCategory").addClass("primaryCategory-active");

这只会检索具有 primaryCategory 类的下一个同级。

<小时/>

但是点击右箭头超过3次将会丢失事件类

您需要添加一个条件来解决此问题,这是一个更好的解决方案:

$(".primaryCategory-wrapper .primaryCategory-RightArrow").bind("click", function(e) {

    if(!$("div.primaryCategory.primaryCategory-active").is("div.primaryCategory:last")){
        $("div.primaryCategory.primaryCategory-active").removeClass("primaryCategory-active").next().addClass("primaryCategory-active");
    }
});

$(".primaryCategory-wrapper .primaryCategory-leftArrow").bind("click", function(e) {
    if(!$("div.primaryCategory.primaryCategory-active").is("div.primaryCategory:first")){
        $("div.primaryCategory.primaryCategory-active").removeClass("primaryCategory-active").prev().addClass("primaryCategory-active");
    }
});

这是一个 fiddle

关于javascript - jQuery .next() 进入不正确的 Div),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19826399/

相关文章:

javascript - 有没有办法既解构函数参数,又保留对参数的命名引用?

javascript - 通过用户输入更改按钮单击上的视频

javascript - 对背景图像的淡入效果

javascript - Select2 - 选项项中的自定义输入字段,防止点击事件

javascript - JQuery:如何在 find() 的结果中使用每个?

jquery - 对表单执行验证

javascript - 在 for 循环中将一行放入前景

javascript - ng-model 不会在文本过滤器的单个按键上重新计算数组长度

javascript - 使用 jQueryeach() 动态添加图像到 div ..不知何故,它们都添加到最后一个 div

javascript - 如何通过 jquery UI slider 从动态更改值的输入中获取值?