2011-04-17 48 views
2

我有一个使用颜色选择器的表单,这是在带有表单选择输入标签的Document Ready中定义的。但我需要通过另一个页面中的AJAX访问某些数据,并将响应替换为该表单。当我这样做时,jquery colorpicker停止工作。我想这会很酷,重新加载Document Ready什么的。将Ajax响应注入DOM后重新加载文档?

否则我认为我唯一的选择是JSON将变量从PHP输出传递给jquery,然后返回到html,对吧?

+0

您是否有现场演示?应该有一个更简单的方法。我想在需要时显示/隐藏颜色选择器。 jQuery对于动态内容的事件处理程序是挑剔的,但如果它在页面中始终处于良好状态。 – wdm 2011-04-18 01:41:17

回答

0

您可以使颜色选择器初始化脚本从其自己的函数运行,并在文档中调用一次,并在您的ajax调用的回调中再次调用。

6

有两种基本的方法可以实现这一点。第一种是使用其他代码调用可以调用颜色选择器的函数。另一种是手动重新触发文档的准备事件。前者需要对拾色器代码稍作修改,但后者将重新执行绑定到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! 
}); 
0

从服务器作为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 
     } 
    }); 
});