我有一个使用颜色选择器的表单,这是在带有表单选择输入标签的Document Ready
中定义的。但我需要通过另一个页面中的AJAX访问某些数据,并将响应替换为该表单。当我这样做时,jquery colorpicker停止工作。我想这会很酷,重新加载Document Ready
什么的。将Ajax响应注入DOM后重新加载文档?
否则我认为我唯一的选择是JSON将变量从PHP输出传递给jquery,然后返回到html,对吧?
我有一个使用颜色选择器的表单,这是在带有表单选择输入标签的Document Ready
中定义的。但我需要通过另一个页面中的AJAX访问某些数据,并将响应替换为该表单。当我这样做时,jquery colorpicker停止工作。我想这会很酷,重新加载Document Ready
什么的。将Ajax响应注入DOM后重新加载文档?
否则我认为我唯一的选择是JSON将变量从PHP输出传递给jquery,然后返回到html,对吧?
您可以使颜色选择器初始化脚本从其自己的函数运行,并在文档中调用一次,并在您的ajax调用的回调中再次调用。
有两种基本的方法可以实现这一点。第一种是使用其他代码调用可以调用颜色选择器的函数。另一种是手动重新触发文档的准备事件。前者需要对拾色器代码稍作修改,但后者将重新执行绑定到document.ready的所有函数!确保这是你想要的,然后再做。 :-)
// option one
function setupColorPicker() {
// do color picking magic
}
$(document).ready(setupDatePicker);
$.ajax(options).done(setupColorPicker);
// option two
$(document).ready(function() {
// do color picking magic
});
$.ajax(options).done(function() {
$(document).trigger("ready"); // probably has unintended side-effects!
});
您应该注册使用live
或delegate
方法的事件:
从服务器作为JSON传回的数据将不只能实现你的目标,但也会提高应用程序的性能(SPEED),并节省你的b字节andwidth。如果您仍然希望以纯html的形式注入响应,只需在函数中初始化颜色选择器插件,然后在您的ajax成功回调之后调用该函数。
$(document).ready(function(){
//page is ready
function colorpicker(){
//initialize your color picker
}
$.ajax({
url: 'serverpage.cshtml', //whatever server page
data: {data1: data1},
success: function(){
//append the response into the designated form or div
colorpicker(); //fire the color picker function to refresh
}
});
});
您是否有现场演示?应该有一个更简单的方法。我想在需要时显示/隐藏颜色选择器。 jQuery对于动态内容的事件处理程序是挑剔的,但如果它在页面中始终处于良好状态。 – wdm 2011-04-18 01:41:17