0

では、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);
    });
   }
  });
 })

詳細が必要な場合はお知らせください。よろしくお願いします。このサイトは優れています。

4

1 に答える 1

0

.livequery()どのバージョンといくつかの特別な DOM ケースに応じて問題があります。ただし、その問題は無視できます...イベントを処理する何かを行っているため、次のように、.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);
      });
    }
  });
});
于 2010-08-26T20:40:33.360 に答える