2013-05-17 2 views
1

У меня есть несколько функций jquery и ajax, которые отлично работают в Google Chrome. Когда я использую их в firefox, хотя на моем живом сервере это не работает. Это известная проблема в firefox или есть простое решение, которое я пропустил? Я думаю, что в основном это проблема с кодом AJAX, но я не уверен.Перекрестный браузер jQuery

Вот мой JQuery код ....

$(document).ready(function(){ 
    $("a[id ^= 'toggle']").live("click", function(){ 
     event.preventDefault(); 
     $("div [id='replypost_"+$(this).attr('id').replace('toggle_','')+"']").toggle(); 
    }); 
}); 

Примечание: Это также не работает в Internet Explorer. Он работает только в Google Chrome!

+1

Будьте осторожны с пробелами селекторов, которые могут быть проблемы. – elclanrs

ответ

2

Какую версию jquery вы используете?

no event определено?

Попробуйте?

$(document).ready(function(){ 
     $("a[id^='toggle']").live("click", function(event){ 
      event.preventDefault(); 
      $("div [id='replypost_"+$(this).attr('id').replace('toggle_','')+"']").toggle(); 
     }); 
}); 

По JQuery 1.7, метод .live() является устаревшим. Используйте .on() до , присоедините обработчики событий. Пользователи более старых версий jQuery должны использовать .delegate() в предпочтении .live().

$(document).ready(function(){ 
     $("a").on("click", "a[id^='toggle']", function(event){ 
      event.preventDefault(); 
      $("div [id='replypost_"+$(this).attr('id').replace('toggle_','')+"']").toggle(); 
     }); 
}); 
+1

Уверен, проблема заключается в том, что 'event' не был определен как параметр. То, как вы используете '.on()' **, не является эквивалентом '.live()'. – Ian

+0

Я использую .live() для обработки теперь и будущих объектов. –

+1

@KeithDrakeWaggoner Вам нужно будет использовать что-то вроде '$ (document) .on (" click "," a [id^= 'toggle'] ", function (event) {});' – Ian