jQuery .each使用ajax加载的内容

时间:2012-06-09 17:05:09

标签: javascript ajax jquery

我有以下功能,func resizeInputText工作正常。基本上我想在我的应用程序通过ajax成功加载数据时调用resizeAll。

在页面加载后拉出内容时,我试图将每个代码包装在.on事件中。

它无法正常工作,是否有人知道如何执行此操作或如何使用ajax加载的内容调用.each?

一如既往地谢谢!

function resizeInputText(obj) {
var boxWidth = ($(obj).val().length * 7) + 1;
    if (boxWidth <= 30) {
        var boxWidth = 30;
    } else if (boxWidth >= 250) {
        var boxWidth = 250;
    }
$(obj).css({width:boxWidth});
}

function resizeAll() {
$("#right-content").on(function () {
    $("input:text").each(function () {
        resizeInputText(this);
    });
});
}

3 个答案:

答案 0 :(得分:4)

.on中的resizeAll方法没有执行该函数的事件。您可以看到各种用法on the documentation page,但基本上您需要告诉它要监听哪个事件,以及在引发该事件时该怎么做。 Ajax使用.on方法广播您可以绑定的一些事件,在这种情况下,'ajaxSuccess'可能适合您。

但是,更好的方法是传递resizeAll作为ajax方法的回调,该方法将在成功完成ajaxCall时执行。 jQuery ajax语法允许您通过包含选项success: resizeAll来执行此操作。在这种情况下,您可以修改resizeAll看起来像这样:

function resizeAll() {
    $("input:text").each(function () {
        resizeInputText(this);
    });
}

答案 1 :(得分:0)

您只需在AJAX请求的success回调中调用该函数即可。

答案 2 :(得分:0)

正如ThiefMaster所说,你可以这样做:

$.ajax({  
url : "requested url",
data : { "data to be send "},
success : function(data) {
   $.each(data, function(index,value) {

     //your code goes here
  });
}
});