2010-07-23 113 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); 
      });