2012-06-28 2 views
2
$(document).ready(function(){ 

$(function() { 
    $('a.ajaxload').click(function(e) {   
     var url = $(this).attr('href'); 
     $('#desktopcontainer').load(url); // load the html response into a DOM element 
     e.preventDefault(); // stop the browser from following the link 
    }); 
}); 

$(function() { 
    $(".accordion .accordion-tabs .tab").each(function(){ 
     $(this).click(function(){ 
      if ($(this).hasClass('tab')){ 
      $(this).removeClass('tab'); 
      $(this).addClass('active'); 
      }else{ 
      $(this).removeClass('active'); 
        $(this).addClass('tab'); 
      } 

      $(this).next().slideToggle('slow'); 
       return false; 
     }); 
    }); 
}); 
}); 

Моя вкладка отлично работает, но после того, как я нажму «a.ajaxload», чтобы добавить содержимое на страницу, моя вкладка больше не отвечает.Событие jQuery не работает после загрузки

Может кто-нибудь скажет мне, где проблема?

РЕШЕННЫЙ !!!

Что я сделал, так это добавить функцию после загрузки ... посмотрите на новый код ниже и увидите разницу. Надеюсь, это поможет кому-то.

$(document).ready(function(){ 

initDashboard(); 

$(function() { 
    $('a.ajaxload').click(function(e) {   
     var url = $(this).attr('href'); 
     $('#desktopcontainer').load(url); // load the html response into a DOM element 
     e.preventDefault(); // stop the browser from following the link 
     initDashboard(); 
    }); 
}); 

function initDashboard() { 
    $(".accordion .accordion-tabs .tab").each(function(){ 
     $(this).click(function(){ 
      if ($(this).hasClass('tab')){ 
      $(this).removeClass('tab'); 
      $(this).addClass('active'); 
      }else{ 
      $(this).removeClass('active'); 
        $(this).addClass('tab'); 
      } 

      $(this).next().slideToggle('slow'); 
       return false; 
     }); 
    }); 
} 

}); 
+0

Спасибо, я сделал это. – Shina

+1

Не могли бы вы показать нам свой html-код? –

+0

Возможно, клик должен быть также 'live' (примечание: в jQuery 1.7+ вы должны использовать' on' вместо)? Какой контент он загружает? Можете ли вы разместить jsfiddle> –

ответ

2

Вам нужно on(), поскольку она динамически добавляется (например, вставленные с помощью load метода):

$('.accordion .accordion-tabs').on('click', '.tab', function(){ 
    if ($(this).hasClass('tab')) { 
     $(this).removeClass('tab'); 
     $(this).addClass('active'); 
    }else{ 
     $(this).removeClass('active'); 
     $(this).addClass('tab'); 
    } 

    $(this).next().slideToggle('slow'); 
     return false;  
    }); 
}); 

Также нет необходимости использовать JQuery готового обработчик три раза, просто поставить все ваше JQuery связанным код внутри этого:

$(document).ready(function(){ 

}); 

Docs:

+0

The on(), похоже, ничего не делает - даже когда пользователь впервые попадает на страницу. Именно по этой причине я использую live() в первую очередь. Любая причина? – Shina

+0

@Shina: Это часть последней версии jQuery, попробуйте использовать последнюю версию. – Blaster

Смежные вопросы