jquery手风琴在同一标题上单击两次

时间:2013-08-30 18:33:52

标签: jquery accordion

我想建立一个手风琴效果,我已经达到了一个很好的结果但是当我再次点击相同的botton时,图片不会改变,直到我点击另一个标题......

$(document).ready(function () {
$('.boxes').slideToggle("fast");
item = "";
item0 = "";

$(function () {
    $('.box_head').click(function () {
        idelem = $(this).attr('id');
        idelemdiv = idelem.replace('boxhead_', 'box_');

        if (item === idelemdiv){
            $('#' + idelemdiv).slideToggle("normal");
            item = "";

        } else {
            $('#' + item).slideToggle("normal");
            $('#' + idelemdiv).slideToggle("normal");
            $('#' + item0).children('img').attr({
            src: 'http://wp.wicker-schuetz.de/wp-content/themes/Drlawyer/images/buttons/bg-open.png'
        });
            item = idelemdiv;
            item0 = idelem;
        }

        if ($('#' + idelem).children('img').attr({
            src: 'http://wp.wicker-schuetz.de/wp-content/themes/Drlawyer/images/buttons/bg-open.png'
            })) {$('#' + idelem).children('img').attr({
            src: 'http://wp.wicker-schuetz.de/wp-content/themes/Drlawyer/images/buttons/bg-close.png'
            });}
        });
    });
});

jsfiddle

我的折叠在哪里?

最后我觉得它需要另外一个争论,但我的尝试不会起作用。

2 个答案:

答案 0 :(得分:0)

这总是返回true:

 if ($('#' + idelem).children('img').attr({
        src: 'http://wp.wicker-schuetz.de/wp-content/themes/Drlawyer/images/buttons/bg-open.png'
        }))

如果你把它改成这样的话,你可能会得到你想要的结果:

if ($('#' + idelem).children('img').attr('src') = 'http://wp.wicker-schuetz.de/wp-content/themes/Drlawyer/images/buttons/bg-open.png')

这是一个小提琴:http://jsfiddle.net/zDpgQ/5/

答案 1 :(得分:0)

你可以让整件事变得更容易:

Example

$(function() {
    $('.boxes').hide();
    $(document).on('click', '.box_head', function(e) {
        var head = $(this),
            icon = head.children('img'),
            box = head.next('.boxes');
        box.siblings('.boxes:visible').slideUp('normal', function(e) {
            $(this).prev('.box_head').children('img').prop('src', icon.prop('src').replace('bg-close', 'bg-open'));
        });
        box.slideToggle('normal', function(e) {
            if ($(this).is(':visible')) {
                icon.prop('src', icon.prop('src').replace('bg-open', 'bg-close'));
            }
            else {
                icon.prop('src', icon.prop('src').replace('bg-close', 'bg-open'));
            }
        })
    });
});

Fun version of Example!