2010-03-04 73 views
7

目前我使用的是John Resig's LiveQuery plugin/function,允許用戶對列表項進行排序。代碼如下:$('input#q').liveUpdate('ul#teams').focus();當我使用ajaxified選項卡對列表進行排序時出現問題。基本上我使用ajax來拉入不同的列表,並且liveUpdate()函數不能訪問新的li。如何使用jQuery .live()和ajax

我假設我需要綁定這個使用.live() function。但我不清楚如何將此綁定到ajax事件,我只使用「click」事件。我如何將新的liveUpdate()綁定到新加載的列表項?

編輯: 阿賈克斯標籤通過WordPress的AJAX API因此代碼相當複雜的運行,但簡化它是這樣的:

$('div.item-list-tabs').click(function(event) { 
    var target = $(event.target).parent(); 

    var data = {action, scope, pagination}; // Passes action to WP that loads my tab data 
    $.post(ajaxurl, data, function(response) { 
     $(target).fadeOut(100, function() { 
      $(this).html(response); 
      $(this).fadeIn(100); 
     }); 
    }); 

    return false; 
}); 

這簡化了這次談話的緣故,但基本上一旦$.post載入響應,.liveUpdate()就無法訪問它。我相信.live()功能是回答這個問題,我只是不清楚如何與$.post()

+1

能否請您發佈的代碼你正在使用你的「Ajax化標籤」? – matdumsa 2010-03-04 05:34:32

+0

我用ajax-tabs js編輯了原始帖子 – kylemac 2010-03-04 16:51:50

回答

0
$('input#q').live(function() { 
    $(this).liveUpdate('ul#teams').focus(); 
}); 
0
$("div.item-list-tabs").live("click",function(){ 
//statements.. 
}); 
1

實現它嘗試使用jQuery's Ajax Events

$('input#q').ajaxComplete(function(){ 
    $(this).liveUpdate('ul#teams').focus(); 

    $(this).unbind('ajaxStop'); 
}); 
4

,如文檔中mentionned JQuery的.live()被認爲已被棄用。您應該使用.on()方法。

$("#yourSelector").on("click", function() { 
    // statement 
}); 

要還管理選擇類型的對象未來的危機,你可以使用。對()這樣的

$(document).on("click", "#yourSelector", function() { 
    // statement 
}); 
1

我也有麻煩與阿賈克斯後只用

$('selector').click(function(.. 

打電話,最後發現我們需要用

$('selector').live("click", function(){.. 

或新方法

$(document).on('click', 'selector', function(){.. 

用於調用Ajax之後創建新的元素綁定事件。

$(document).on('click','selector', function(event){ 
//your code  
}); 

對於實時

$('selector').live('click', function(event){  
//your code  
});