首先,我正在使用jQuery UI为我的按钮设置外观。我有一个有按钮的表单。此表单包含不同数量的复选框。如果我有一个复选框消失,其中一个按钮的方法是,在复选框删除成功后,.load()
是没有页面刷新的新复选框。
以下是代码:
$('#zoneRemove').live('click',function() {
$.post('php/zoneNotifUnsub.php', $('#zoneNotifUnsub').serialize(), function(){
$('#zoneDiv').load('notifications.php #zoneDiv');
});
});
效果很好。唯一的问题是,当#zoneDiv
重新加载时,它似乎返回一个不同的结果,因为我的按钮没有蒙皮(按钮在div中,将它放在外面会使整个事情不起作用)。这通常是JS语法错误的症状(因为我的脚本中的任何错误都会导致按钮蒙皮失败;这是一个用于调试的半有用的错误/功能)。但是,我显然不会更改任何JS代码。唯一可以改变的是#zoneDiv
中包含的某些PHP的输出。
任何帮助?
答案 0 :(得分:1)
这是因为您的按钮是由JQuery UI动态更改的。只需再次对该div中的元素运行.button()
(您可以将.button
更改为您需要的任何功能):
$('#zoneDiv').load('notifications.php #zoneDiv', function(){$(this).find('.button').button();});
无论你在页面加载时对div做什么样的风格,你都必须重新做一遍。
答案 1 :(得分:0)
当您加载“#zoneDiv”时,当您加载页面时需要重新运行时,是否使用javascript进行任何类型的样式设置?
答案 2 :(得分:0)
由于您使用代码而不是标记(例如,调用jQuery UI的Button
内容)来“剥离”按钮,因此不会自动应用于新内容。您需要重新运行用于发现按钮实例的代码并将外观应用于它们。
使用load
回调来触发代码,例如:
$('#zoneRemove').live('click',function() {
$.post('php/zoneNotifUnsub.php', $('#zoneNotifUnsub').serialize(), function(){
$('#zoneDiv').load('notifications.php #zoneDiv', function() {
// This is the callback; make all checkboxes in the content "buttons"
$(this).find(":checkbox").button();
});
});
});
......或类似的。
答案 3 :(得分:0)
你使用$('mybutton').button()
来“修饰”你的按钮吗?如果是这样,你需要再次调用它,因为你按下的按钮消失了,并且。button()
不在线。
所以试试这个:
$('#zoneDiv').load('notifications.php #zoneDiv', function(){
$('mybutton').button();
});
答案 4 :(得分:0)
您的第一段中似乎提到了这个问题:I'm using jQuery UI for skinning my buttons
。无论您对皮肤做什么,您的按钮也需要对新加载的内容进行操作。即如果你在pageload上做这样的事情:
$(function() {
...
$('#zoneDiv button.my-button').button();
...
});
然后,当新的#zoneDiv
加载时,之前已经应用了按钮功能的所有DOM元素将不再存在。所以你必须做这样的事情,在load()函数中添加一个回调。在新内容陷入DOM后立即触发:
$('#zoneDiv').load('notifications.php #zoneDiv', function(){
$('#zoneDiv button.my-button').button();
});