2010-07-23 92 views
2

我想在任何表單元素上有點擊事件時重新加載元素。任何人都可以用jQuery語法幫助我嗎? 像如何隨時刷新頁面中的元素'div' - jquery

function addClickHandlers() { $.publish('refreshDiv'); }

在div的reloadTopic設置爲refreshDiv

感謝

+0

您通過重新加載瞭解什麼?應該插入新的html數據?應該刪除一個佈局,添加? ... – Nealv 2010-07-23 12:21:44

回答

1

Click事件冒泡,所以你可以設置事件表單元素上:

$('#myForm').click(function() { 
    $.publish('refreshDiv'); 
}); 

您也可以使用.delegate()只捕捉某些元素的點擊次數在表格中:

$('#myForm').delegate("input, select, textarea", "click", function() { 
    $.publish('refreshDiv'); 
}); 
+0

如果有很多表單包含這個特定的div,並且我希望它在任何一個表單中點擊某個東西時重新加載,該怎麼辦?這當然意味着我有一些包含在所有這些頁面中的文件,並且這個腳本放在該文件中 – abs 2010-07-23 11:23:53

+0

我在jQuery中沒有看到任何'publish'方法,它是一個插件還是什麼? – Sarfraz 2010-07-23 11:24:17

+0

@sAc:我想是的,在問題中沒有足夠的細節來說明。 – 2010-07-23 11:28:12

0

爲每個元素添加一個處理程序。

$('*').click(function() { 
    $.publish('refreshDiv'); 
    return false; // to stop it from bubbling as we already handled it here. 
}); 
+1

使用通用選擇器'*'是壞業力和約翰resig的精神可能來,並得到你如果這樣做! – jAndy 2010-07-23 11:29:00

+0

將點擊處理程序應用於DOM中的每個*元素也是非常低效的。 – 2010-07-23 11:30:14

0

好吧,我可以從兩個方面解讀文本:

1),它是一個表單元素

$('form').children().click(function(){ 
    $.publish('refreshDiv'); 
}); 

2)的孩子們上的所有執行$.publish任何元素上執行$.publishform elements(與checkboxes, radio buttons, etc.相同)

$('form').find('input').click(function(){ 
    $.publish('refreshDiv'); 
}); 

像Andy E.建議的那樣,它具有更好的性能delegate click事件,所以減少event handlers被約束。

3)

$('form').delegate('input', 'click', function(){ 
    $.publish('refreshDiv'); 
}); 
+0

你可以使用* delegate()*來獲得更高效的'2)'。 – 2010-07-23 11:34:30

0

我沒有想法關於發佈和我從來沒有見過這種代碼在jQuery的,但如果u要重新加載整個頁面那麼在哪裏做好後續的事

<button id="PageRefresh">Refresh a Page in jQuery</button> 

<script type="text/javascript"> 

    $('#PageRefresh').click(function() { 

       location.reload(); 

    }); 

</script> 

如果你想重新加載特定的div,那麼我認爲你應該在jQuery中使用ajax並重新加載div中的html。

$.post("/page", frm.serialize(), function(data) { 
        $("#ReminderProjectCount").html(data); 
      });