设为首页收藏本站

融智技术学院

 找回密码
 注册

QQ登录

只需一步,快速开始

Highmaps网页图表基础教程大学霸内部资料
搜索
查看: 293|回复: 1

【JavaScript每日一问】为什么一个简单的jQuery选择器无法正常运行?

[复制链接]
MrLi 发表于 2014-4-4 15:00:00 | 显示全部楼层 |阅读模式

Q:
我试着解析下面的HTML:
  1. <tr id="a">
  2.     <td class="classA">
  3.         <span class="classB">Toronto</span>
  4.     </td>
  5.     <td class="classC">
  6.         <span class="classD">Winnipeg</span>
  7.     </td>
  8. </tr>
  9. <tr id="b">
  10.     <td class="classA">
  11.         <span class="classB">Montreal</span>
  12.     </td>
  13.     <td class="classC">
  14.         <span class="classD">Calgary</span>
  15.     </td>
  16. </tr>
复制代码

这里有一个变量team。我想找到包含team的<span>标签。然后我想定位到<tr>标签并且获取其id。
我是这样做的:
  1. var team = "Toronto";
  2. var id = $("span:contains(" + team + ")").parent().parent().attr('id');
复制代码
但是返回值却是为定义的。我知道选择器是正确的。
因为$("span:contains("+tem+")").attr('class')返回了classB。所以我不理解哪出现了问题。有人可以帮我吗?
注意:这里是JSFiddlehttp://jsfiddle.net/BgMSd/1/

A:
你的html是无效的,但是你的选择器是正确的。你需要把tr放到table标签中才算是有效的html。最好使用closest("tr")代替.parent().parent()
一个鲜活的例子http://jsfiddle.net/rajaadil/BgMSd/2/
  1. <table>
  2.     <tr id="a">
  3.         <td class="classA"> <span class="classB">Toronto</span>
  4. </td>
  5.         <td class="classC"> <span class="classD">Winnipeg</span>
  6. </td>
  7.     </tr>
  8.     <tr id="b">
  9.         <td class="classA"> <span class="classB">Montreal</span>
  10. </td>
  11.         <td class="classC"> <span class="classD">Calgary</span>
  12. </td>
  13.     </tr>
  14. </table>
复制代码
温馨提示:您的支持与理解,是我们工作最大的动力。如果您是从网上购买的图书,请在对应的网店,给予本书一个好评,我们将衷心感谢!!!
以下是《轻松学HTML+CSS网站开发》对应的购书评论地址:
当当网:http://product.dangdang.com/1196254105.html
亚马逊:http://www.amazon.cn/dp/B00E1MMUR4
京东网:http://item.jd.com/11283717.html

木青山 发表于 2014-4-5 11:35:16 | 显示全部楼层
学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

新突破电商

小黑屋|手机版|Archiver|融智技术学院 ( 京ICP备09018999号  

GMT+8, 2018-1-19 06:00

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表