在jQuery包装器函数中回调

时间:2011-02-15 20:00:03

标签: javascript jquery get

我编写了一个检索html模板的函数,然后使用jQuery.tmpl绑定数据。我认为它相当整洁,并且封装了我需要的东西并为我提供了可重用的功能。然而,我的问题是可以改进。

我主要关心的是如果$ .get方法失败,以及callBack函数的执行方式。

function Bind(templateURL, templateData, templateTarget, callBack){
var req = $.get(templateURL);
    req.success(function(templateHtml) { 
        $(templateTarget).html(''); //clear
        $(templateHtml).tmpl(templateData).appendTo(templateTarget); //add deal
    callBack();
    });
 }

2 个答案:

答案 0 :(得分:1)

您可以将tmpl()的结果直接传递给html()以清除目标容器并同时附加新内容。您还可以将$.get()的结果链接到success处理程序中,以避免使用局部变量:

function Bind(templateURL, templateData, templateTarget, callBack)
{
    $.get(templateURL).success(function(templateHtml) { 
        $(templateTarget).html($(templateHtml).tmpl(templateData));
        callBack();
    });
}

如果$.get()失败,则不会发生任何事情,因为您没有注册错误处理程序。该处理程序的功能取决于您,但您可能希望在警告框或页面上的某个位置显示相应的消息。

你的第二个问题不太清楚。按照目前的情况,callBack只会在成功时被调用,而且不需要参数。

答案 1 :(得分:0)

您可以使用$ .ajax分配和错误回调。例如:

var jqxhr = $.ajax({ url: "example.php" })
    .success(function() { alert("success"); })
    .error(function() { alert("error"); })

检查api http://api.jquery.com/jQuery.ajax/