2013-04-22 3 views
1

Я совершенно новый для javascript, но я использую его на своем веб-сайте. На прошлой неделе я нашел скрипт, который загружает дополнительный контент на мою страницу через jQuery. Все было в порядке, пока я не заметил, что из-за этого мои другие сценарии перестали работать. Например, у меня есть сценарий, который связывает флажки:jQuery не работает после загрузки дополнительного контента

<script> 
$(document).ready(
    function() { 
     $('.class_of_checkbox').click(
      function() { 
       if(this.checked == true) { 
        $(".class_of other_checkbox").attr('checked', this.checked); 
       } 
      } 
     ); 
    } 
); 
</script> 

Это встроенный код. Я прочитал, что это может быть вызвано функцией ready(), которая срабатывает только при загрузке DOM, но я не уверен, как решить эту проблему.

+1

Ваш загрузочный флажок загружен динамически или его статический? –

+0

Вы также должны использовать '.prop()' ... .prop ('checked', this.checked); ' – tymeJV

+0

L загружать мой флажок динамически – user1857756

ответ

2

Динамические элементы, загруженные с помощью AJAX потребностей делегированных обработчиков событий:

$(document).ready(function() { 
    $(document).on('change', '.class_of_checkbox', function() { 
     if (this.checked) 
      $(".class_of other_checkbox").prop('checked', this.checked); 
    }); 
}); 

Заменить второй document с ближайшим не динамическим родителем, используйте prop() для свойств и используйте change Событие, чтобы зафиксировать изменения в состоянии флажка.

+0

Убей меня! Не знаю, почему это случилось. +1. – tymeJV

+0

Меня тоже. Это прекрасный пример того, когда вы должны использовать делегированные события. +1 – War10ck

+1

Почему вы выбираете документ дважды? '$ (function() {$ (this) .on ('change', '.class_of .....' – AlienWebguy

1

Использование $ .ajaxComplete пересвязать ваши действия, когда вызов Ajax завершает

http://api.jquery.com/ajaxComplete/

$(document).ajaxComplete(function() { 
    $('.class_of_checkbox').click(
     function() { 
      if(this.checked == true) { 
       $(".class_of other_checkbox").attr('checked', this.checked); 
      } 
     } 
    ); 
}); 
+0

$ .ajaxComplete fires ** everytime ** ajax call завершает , переадресовывая событие любым элементам, находящимся на странице. – adeneo

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