【问题标题】:jQuery .hide() only working half the timejQuery .hide() 只工作了一半
【发布时间】:2015-05-01 06:34:41
【问题描述】:

这对某些人来说可能看起来很明显,但我真的不明白为什么会发生这样的事情,所以我正在寻求任何可能的帮助!

我有扩展行,当单击或按下下一个按钮时,每一行都应扩展以显示其详细信息。单击时它们会正确显示和隐藏,但是按下下一个按钮时我无法使其工作。

这是 .js 部分:

var main = function() {

var curQuantity1 = 0;
var curQuantity2 = 0;
var curQuantity3 = 0;

$('.article').click( function() {
    $('.description').hide();
    $('.article').removeClass('current');
    $(this).children('.description').show();
    $(this).addClass('current');
});

$(".next1").click( function() {
    if (curQuantity1 + curQuantity2 + curQuantity3 == 3){
        console.log("Next clicked");

        var currentArticle = $('.current');
        var nextArticle = currentArticle.next();

        currentArticle.removeClass('current');
        nextArticle.addClass('current');

        $('.description').hide();
        $('.current').children('.description').show();
    } else {
        alert("총 3통을 골라주세요");
    }
});
...//code here takes care of updating curQuantity so they can add upto 3
};

$(document).ready(main);

我认为在此处粘贴 html 代码可能会使其太长,但如果需要,会这样做。

我隐约猜测可能不允许 child 修改其父类,但我找不到解决方法。

提前感谢您的帮助!我一整天都被难住了:(

【问题讨论】:

  • 添加/删除类没有任何限制。也许尝试使用jsFiddle 重新创建您的问题,这是我们帮助您解决问题的最简单方法。
  • 只有在curQuantity1 + curQuantity2 + curQuantity3 == 3 时,下一个按钮才会转到下一个元素。但它们都设置为 0,所以总数为 0,您只需发出警报。
  • @Barmar 哦,当按下按钮时,我更改了 ... 部分中的 curQuantity - 日志“Next clicked”安全打印出来;)

标签: javascript jquery html


【解决方案1】:

由于.next1.article 中,当您单击“下一步”按钮时,由于事件冒泡,单击也会发送到包含它的文章。所以首先.next1 click 处理程序显示下一个项目,然后.article click 显示旧文章。解决方案是使用event.stopPropagation() 阻止事件冒泡:

$(".next1").click( function(e) {
    e.stopPropagation();
    if (curQuantity1 + curQuantity2 + curQuantity3 == 3){
        console.log("Next clicked");

        var currentArticle = $('.current');
        var nextArticle = currentArticle.next();

        currentArticle.removeClass('current');
        nextArticle.addClass('current');

        $('.description').hide();
        $('.current').children('.description').show();
    } else {
        alert("총 3통을 골라주세요");
    }
});

【讨论】:

  • 哦原来是这个问题!感谢 Barmar 的精彩解释 - 今天帮助我变得更好!对于任何有同样问题的人 - 它完美无缺!
  • Javascript 调试器是你的朋友,学会使用它。我只是单步浏览了您的代码,看到它正在移动到下一个项目,然后返回。
  • 会的!再次感谢!
猜你喜欢
  • 2011-12-14
  • 2015-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多