2011-03-09 52 views
1

我正在学习如何遍历DOM所以这个问题是有关jQuery的切换等待图像。而AJAX调用时

我使用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(); 
}); 
+0

“ID是不是唯一的”你的意思是你用相同的ID不止一次在页面? AFAIK这是一个非常糟糕的主意。 – Terseus 2011-03-09 16:46:36

+0

我完全同意。这就是说,“项目”,可以添加到列表中的表的形式(一种很难解释),所以唯一的ID是不容易没有性能的损失得到。我更喜欢使用唯一的ID,但基于这个项目的参数,我无法避免它。 – HPWD 2011-03-09 17:00:29

回答

0

您需要遍历 “向上” 的DOM用父...然后你可以拖拉机使用chiildren或兄弟姐妹回退“下”DOM。

,所以你可以做soemthing,如:

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

我读过关于儿童的内容,但我没有“得到”它,所以我会再次审查。顺便说一下,这工作。非常干净和优雅。 – HPWD 2011-03-09 17:01:24

+0

如果我想找到一个SPAN标签,所以我可以根据ajax调用结果分配文本而不是切换图像,我会将代码更改为'$(this).parent()。children('span.statusDiv' ).text('done');'? – HPWD 2011-03-09 21:12:59

+0

您可以专门对类电话......你不必包括HTML元素的选择。有很多方法可以更新jquery中的div/span ... innerHtml是一个很好的研究。 – Patrick 2011-03-11 13:01:28