JQuery советы по выбору дивов - PullRequest
0 голосов
/ 06 октября 2011

поэтому я пытаюсь создать эффект аккордеона с помощью перфорации панелей. Действие инициируется нажатием на панель в верхней части панели, которую нужно открыть. Это все работает нормально, но проблема, с которой я столкнулся, заключается в выборе другой открытой панели и закрытии ее при открытии новой панели. Новая панель также закрывается!

$(document).ready(function(){
    $('.content_accrd').css({"height":"0px"});
$('.paneltop').click( function() {
    $(this).css({"background-position":"0px -21px"})
    .siblings().animate({"height":"100px"}, 200)
    .parent().children(".content_accrd").animate({"height":"0px"});
})
})

Ответы [ 2 ]

0 голосов
/ 06 октября 2011

Полагаю, кроме вашей текущей DIV, на которую вы нажали, также будет работать. Но это не так важно.

$(document).ready(function(){
$('.content_accrd').css({"height":"0px"});
$('.paneltop').click( function() {
    $(this).css({"background-position":"0px -21px"})
    .siblings().animate({"height":"100px"}, 200).not($(this))
    .parent().children(".content_accrd").animate({"height":"0px"});
  })
})

Я не знаю, видели ли вы эту статью: http://www.artzstudio.com/2009/04/jquery-performance-rules/ Он предлагает несколько полезных советов по производительности, которые помогли мне в процессе обучения.

Также вам определенно стоит попробовать создать плагин самостоятельно, это также большой шаг к более глубокому пониманию jQuery.

http://stefangabos.ro/jquery/jquery-plugin-boilerplate-oop/

0 голосов
/ 06 октября 2011

попробуйте это:

$(document).ready(function(){
    $('.content_accrd').css({"height":"0px"});
    $('.paneltop').click( function() {
        $(this).css({"background-position":"0px -21px"})
            .parent().children(".content_accrd").animate({"height":"0px"})
            .siblings().animate({"height":"100px"}, 200);
     })
})

сначала закройте другие открытые панели, затем откройте ту, по которой щелкнули.

...