【问题标题】:jQuery to toggle waiting image while ajax call is madejQuery在进行ajax调用时切换等待图像
【发布时间】:2011-07-12 01:30:36
【问题描述】:

我正在学习如何遍历 DOM,所以这个问题与此相关。

我正在使用 Coldfusion 输出一些数据库结果。这些循环循环遍历表数据,而不是遍历表行。在每个表中,我都有按钮来执行各种 ajax 调用(我已经有了这个工作)。单击按钮时,我想显示或切换动画微调器,以便用户知道正在发生的事情,然后在 ajax 调用完成时隐藏或切换。基本上我只需要帮助识别微调器即可切换它。 ID 不是唯一的

我的第一次尝试是将壁橱跨度标记定位到单击的按钮。我无法让它工作。我的第二次尝试是使用 .parent() 来获取 TD,然后从那里使用 .next() 来定位允许我切换它的 span 标签。我也无法让它工作。在这里写出来之后, next() 可能不是正确的选择,但我仍然在学习如何遍历 DOM。 :)

注意:下面的代码默认显示微调器,但我有一个未在此处显示的函数,它将通过 jQuery 的切换函数隐藏它。

<table cellpadding="3" class="tablesorter" id="table_id">
<tr>
    <th class="form"><label>System Name</label></th>
    <td>
        <button type="button" id="removeButton" class="fg-button ui-state-default ui-corner-all remove_SystemName" >Remove</button>
        <button type="button" id="checkButton" class="fg-button ui-state-default ui-corner-all check_SystemName" >Check</button>
        <span id="statusInfoDiv" class="statusInfoDiv"><img src="/assets/images/working.gif"> Working...</span></td>
</tr>

我试过的jQuery选项1

$(".check_SystemName").live("click", function(){
var spinner = $(this).closest('span').find("statusInfoDiv");
spinner.toggle();
});

我试过的jQuery选项2

$(".check_SystemName").live("click", function(){
var spinner = $("this").parent().next(".statusInfoDiv");
spinner.toggle();
});

【问题讨论】:

  • "ID 不是唯一的" 您的意思是您在页面中多次使用相同的 ID? AFAIK 这是一个非常非常糟糕的主意。
  • 我完全同意。也就是说,“项目”可以以表格的形式添加到列表中(有点难以解释),因此在不损失性能的情况下不容易获得唯一的 ID。我更喜欢使用唯一 ID,但根据这个项目的参数,我无法避免。

标签: jquery ajax find parent next


【解决方案1】:

您需要使用父级“向上”遍历 DOM...,然后您可以使用子级或兄弟级“向下”遍历 DOM。

所以你可以这样做:

$(this).parent().children('.statusInfoDiv').toggle();

【讨论】:

  • 我读到了关于儿童的文章,但我没有“理解”它,所以我会再次查看它。顺便说一句,这行得通。非常干净优雅。
  • 如果我想定位一个 SPAN 标签,以便我可以根据 ajax 调用结果而不是切换图像来分配文本,我会将代码更改为 $(this).parent().children('span.statusDiv').text('done'); 吗?
  • 您可以专门对类进行调用...您不必将 html 元素包含到选择器中。有多种方法可以在 jquery 中更新 div/span...innerHtml 是一个值得研究的好方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-16
  • 1970-01-01
  • 2016-11-12
  • 1970-01-01
  • 2017-06-29
  • 2012-05-04
  • 1970-01-01
相关资源
最近更新 更多