【问题标题】:Formatting Elements After an Ajax Call在 Ajax 调用之后格式化元素
【发布时间】:2015-06-14 12:45:31
【问题描述】:

我正在尝试让 ajax 调用将格式应用于在其完成之前不存在的元素。在实际调用中使用成功函数不起作用。该函数被正确调用但未找到元素('.content-cell'),可能是因为它还不存在。大多数类似的答案都解决了事件委托,但没有应用样式。

我的处理方法正确吗?在 ajax 检索后应用样式和处理程序的最佳方法是什么?

$("#calendar-panel").load("url", setupCal());


function setupCal(){
    console.log("setupCal");
    var cell_width = $('.weekday-cell').width();
    if ($('.content-cell').length){
        console.log("Content cell exists");
    } else {
        console.log("Content cell does not exist");
    }
    $('.content-cell').css({height:cell_width});

此代码的控制台输出为:'setupCal'; '内容单元格不存在'。

【问题讨论】:

    标签: javascript jquery ajax


    【解决方案1】:

    我认为问题可能是您实际上在执行load 函数的行中调用了setupCal 函数。这是因为您包含了实际执行函数(并返回其结果)的括号,而不是将其作为回调参数传递。

    您可以尝试只引用该行中的函数名称,如下所示:

    $("#calendar-panel").load("url", setupCal);
    

    如果在“定义”load 函数时调用了 setupCal 函数,那么该元素肯定还不存在,因此会给出您所看到的输出:“内容单元格不存在”。

    【讨论】:

    • 赞成,谢谢。这似乎是问题所在。但是,我有一个稍后需要使用特定参数调用的函数,我不确定它是如何工作的。此外,官方 jquery 文档显示了一个函数被调用与负载一致。这是怎么回事。
    • 文档显示了一个函数定义,是的。但它不是用括号“手动”执行的。内联回调(如文档中所示)将有利于触发对不同函数的调用,并允许您以更易读和更灵活的方式传递参数。您只需从回调中调用您的单独函数。
    猜你喜欢
    • 2011-10-09
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    相关资源
    最近更新 更多