0


0

jQuery:livequery()でバインドされていても、Ajaxが1回だけ起動する

それでは、livequery()を使用して、関数「ajaxLink」のすべてのリンクのクリックイベントに関数をバインドします。 関数は完全に起動します…​一度。 クリックで最初に成功したajax呼び出しの後、後続のクリックはajaxを起動しません。つまり、livequery()コードにバインドされなくなったということです(推測しています)。

同様の問題を抱えている他の人がコードをready()関数の外に移動した場所を見たので、私はそれを試してみましたが、結果は同じです。

$('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);
    });
   }
  });
 })

詳細が必要な場合はお知らせください。 ご協力ありがとうございます。 このサイトは素晴らしいです。

1 Answer


0


.livequery()`には、どのバージョンといくつかの特別なDOMケースによって問題があります。 ただし、その問題は無視できます…​イベントで機能する何かをしているので、組み込みのhttp://api.jquery.com/live/ [.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);
      });
    }
  });
});