2012-04-19 99 views
0

我有這個頁面,它有選項卡。說的內容,標籤1加載爲默認內容。當我點擊標籤1它加載像這樣的內容:在頁面內容被load()加載後,頁面沒有調用Jquery函數

$('.options').load('index.php?viewfile='+filee+' .optionsPane', function(data) { 
     //inside here i initialized tinymce because the page has tinymce contents. 
} 

並在該選項卡1有一個表單。我已將js頁面鏈接到包含所有功能的頁面。並且我有這個代碼。

$(document).ready(function(){ 
     $('.bottommernuform').submit(function() { 
     var idval = $(this).attr('id').toString(); 
     var idvalarr = idval.split("-"); 
     var region_name= idvalarr[idvalarr.length-1]; 
     var publish = $('#regionstate-'+region_name).val(); 
     var swap = $('#swapregion-'+region_name).val(); 
     var page_url = $('#page-'+region_name).val(); 
     $.post("index.php", { publish:publish , swap:swap, region_name:region_name}, 
          function(data) { 
           //alert(data); 

         }); 

return false; 
}); 

這個完美的作品,當我完全加載頁面後點擊表單提交按鈕。但是,如果我點擊標籤1加載內容負載()$('.bottommernuform').submit()沒有得到調用..它刷新整個頁面。更多的點擊標籤1後,當我嘗試將內容保存在tinymce中時,它也給我一個錯誤。我怎樣才能解決這個問題。請給我一個解決方案。非常感謝! });

回答

2

這裏有兩個可能的問題。首先,使用​​加載內容不會觸發$(document).ready(),因此$(document).ready()中的任何代碼都不會在加載新代碼後運行。

其次,當你使用靜態的事件處理,如:

$('.bottommernuform').submit(fn) 

此事件處理程序將只運行了,在第一次安裝了事件處理時存在'.bottommernuform'對象。這意味着它將不會在未來加載內容。

如果您dynammically加載內容,你想以前安裝的事件處理程序與新內容的工作,那麼你需要使用委派事件處理是這樣的:

$(staticParentSelector).on('submit', '.bottommernuform', fn); 

在此jQuery對象的選擇必須是動態加載.bottommernuform對象的靜態父對象(例如,在您的代碼運行時存在的對象,並且是所有.bottommernuform對象的父對象)。爲獲得最佳性能,它應該是最接近目標的父對象,儘可能不會動態加載。

此外,請記住,要阻止提交操作的默認行爲,您應該從提交事件處理程序中提取return(false)

注意:.on()被添加到v1.7中的jQuery中。對於v1.7之前的版本,您可以使用.delegate(),它的工作方式相似,但參數的順序不同。

+0

非常感謝!所以我可以像'$(staticParentSelector).on('submit','.bottommernuform',function(){...'? – guitarlass 2012-04-19 12:26:10