jQuery切换仅适用于第一次

时间:2015-08-29 19:23:10

标签: jquery

我有一个toggle()按钮,我试图显示加/减图像。它实际工作的唯一时间是第一次点击。

我的代码:

$("#xmlDiv").on("click", "ul", function(e) {
    $(this).find(".mainlist").slideToggle(function () {
        $('span.minus').html('<img src="images/plus.png">');
        },function() {
        $('span.minus').html('<img src="images/minus.png">');
    });
});  

HTML:

<span class="minus"><img src="images/minus.png"></span>

我使用on,因为#xmlDiv中的内容会在页面加载后填充。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

slideToggle()只能有一个回调,会在完成后调用,而不是像hover事件那样多次回调。

.slideToggle( [duration ] [, complete ] )

考虑以下具有2个参数的代码:

  • 持续时间
  • 回调
$("#xmlDiv").on("click", "ul", function(e) {
    $(this).find(".mainlist").slideToggle('slow', function () {
        if($('span.minus img').attrib('src') == 'images/plus.png')
            $('span.minus img').attr("src", "images/minus.png");
        else
            $('span.minus img').attr("src", "images/plus.png");
    });
}); 

答案 1 :(得分:1)

您可以使用条件运算符? :来显示正/负图像。我的解决方案正在关注

$("#xmlDiv").on("click", "ul", function(e) {
    $(this).find(".mainlist").slideToggle(function () {
        $('span.minus').html($('span.minus').html('<img src="images/plus.png">') == '<img src="images/plus.png">' ? '<img src="images/minus.png">' : '<img src="images/plus.png">');
    });
});