2013-09-21 3 views
1

Я попытался создать функцию «expand-unexpand», используя JQuery. Когда пользователь нажимает кнопку expand, появляется дочерний элемент div. И когда пользователь нажимает unpend, дочерний элемент div исчезает. Но это не сработает.JQuery Change Class Not Working

Вот мой код:

$(document).ready(function(){ 
$('.expand').click(function(){ 
    var id = $(this).attr('id'); 

    $(this).html("-"); 
    $(this).attr("class", "unexpand"); 

    $.post("classes/ajax_laporan.php", 
      { 
       id: id 
      }, 
      function(data){ 
      } 
    ); 
}); 

$('.unexpand').click(function(){ 
    $(this).html("+"); 
    $(this).attr("class", "expand"); 
}); 
}) 

Есть ли кто-нибудь может помочь мне решить эту проблему? Заранее спасибо.

+1

Вы не использует методы addClass и removeClass в вашей программе. Обратитесь к http://api.jquery.com/removeClass/ и http://api.jquery.com/addClass/ –

ответ

3

Я думаю, что вы должны использовать делегирование, как показано ниже, потому что элемент с class=unexpand не существует, когда DOM загружается.

$(document).ready(function() { 

    $(document).on('click', '.expand', function() { 
     var id = $(this).attr('id'); 
     $(this).html("-"); 
     $(this).attr("class", "unexpand"); 
    }); 

    $(document).on('click', '.unexpand', function() { 
     $(this).html("+"); 
     $(this).attr("class", "expand"); 
    }); 
}); 

Fiddle Demo

+0

Большое спасибо. Он работает отлично. – user1814734

+1

Когда я хочу принять, он показывает предупреждение, что я должен ждать 4 минуты, чтобы принять ответ, поэтому, пожалуйста, подождите. Большое вам спасибо за вашу помощь: D – user1814734