jQuery: ajax стрельба только один раз, даже если они связываются с livequery ()

StackOverflow https://stackoverflow.com/questions/3579251

Вопрос

Итак, я использую LiveQuery (), чтобы связать функцию к событию кликов всех ссылок класса «AJAXLink». Функция срабатывает идеально ... один раз. После первого успешного вызова AJAX на щелчок, последующие клики не стреляют ajax, что означает (я предполагаю), они больше не связаны с кодом livequery ().

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

$('a.ajaxLink').livequery('click', function(e) {
  e.preventDefault();
  var target = $(this).attr('href') + '&ajax=y';
  var x = $(this).html();

  $.ajax({
   type: 'POST',
   url: target,
   //data: str,
   success: function(msg) {
    $('#mainPanel').slideUp(500, function() {
     $(this).html(msg).slideDown(1000);
    });
   }
  });
 })

Дайте мне знать, если вам нужно больше деталей. Заранее спасибо за вашу помощь! Этот сайт отлично.

Это было полезно?

Решение

.livequery() Имеет проблемы в зависимости от которой версия и некоторые специальные домовые случаи. Тем не менее, вы можете игнорировать эту проблему ... поскольку вы делаете что-то, что работает от событий, вы можете использовать встроенный .live() Здесь (доступно в jQuery 1.3+), как это:

$('a.ajaxLink').live('click', function(e) {
  e.preventDefault();

  $.ajax({
    type: 'POST',
    url: $(this).attr('href') + '&ajax=y',
    //data: str,
    success: function(msg) {
      $('#mainPanel').slideUp(500, function() {
        $(this).html(msg).slideDown(1000);
      });
    }
  });
});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top