2010-12-04 19 views
0

後調用它,我有以下代碼設置的頁面加載一些自定義的表單元素,然後,如果用戶點擊他們將對其進行更新:jQuery的:名稱的通用功能,這樣我就可以AJAX事件

// Setup Function 
$(function() { 
    $('form.vote_ballot > input:checked').prev().addClass('selected'); 
}); 

// Interaction Function 
$(document).ready(function() { 
    $('form.vote_ballot > label').click(function() { 
     $(this).siblings().removeClass("selected").end() 
      .addClass("selected"); 
    }); 
    $('form.vote_ballot').change(function() { 
     $('form.vote_ballot').submit(); 
    }); 
}); 

這基本上允許用戶進行「大拇指」或「大拇指」投票。代碼在用戶編輯現有投票時按預期工作,但當他們創建新投票時,會處理ajax請求,並且需要再次調用初始設置功能。設置函數只應該調用一次(這就是爲什麼它在document.ready塊之外)。 document.ready塊中的交互部分在ajax事件之前和之後都能正常工作。

我對jQuery並不熟練,而且我一直無法弄清楚如何使用setup函數並給它一個名字,所以我可以在ajax事件後再次調用它。

任何幫助?

回答

3

此代碼:

$(function() { 

這:

$(document).ready(function() { 

做完全一樣的。所以,你可以在一個塊處理一切,就像這樣:

$(function() { 
    var setupFunction = function() { 
     $('form.vote_ballot > input:checked').prev().addClass('selected'); 
    } 

    // Setup Function 
    setupFunction(); 

    // Interaction Function 
    $('form.vote_ballot > label').click(function() { 
     $(this).siblings().removeClass("selected").end() 
      .addClass("selected"); 
    }); 
    $('form.vote_ballot').change(function() { 
     $('form.vote_ballot').submit(); 
    }); 

    // example ajax call: 
    $.ajax({ ... 
     success: function() { 
     ... 
     addSelected(); // call from here for example 
     ... 
     } 
    }); 
}); 

正如你看到的我包的一些代碼部分的功能(我把它叫做setupFunction),我可以在任何地方調用它裏面$(function() { ... });

+0

好的,這有助於!現在在我的情況下,我有ajax事件發生在一個單獨的JavaScript文件,而不是相同的文檔就緒塊。我可以從另一個文件調用setupFunction,還是需要在這種情況下做一些不同的事情? – Andrew 2010-12-04 15:57:36

相關問題