我以为在jquery里有一些东西允许你通过链条向后退。
我想这样做
var a = $(this).parent().addClass('test').goBackToParent().children('selectorHere').text()
所以基本上我想得到我拥有的对象的父项,并添加一个类名。一旦我这样做,我想通过它的孩子,找到一个孩子,匹配我的选择器,并得到它的文本。
我可以这样做还是我必须去
$(this).parent().addClass('test'); var a = $(this).parent().children('selectorHere').text()
编辑
我现在使用“结束”,但它不起作用,我举个例子,你可以试试 here
<!DOCTYPE html> <html> <head> <script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <Meta charset=utf-8 /> <title>JS Bin</title> <!--[if IE]> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <style> article,aside,figure,footer,header,hgroup,menu,nav,section { display: block; } </style> </head> <body> <table> <th> <tr>one</tr> <tr>two</tr> </th> <tr> <td id="test"><a href="#"><img src="http://ais.web.cern.ch/ais/apps/hrt/SMT%20v2/Images/btnbar_edit.png" /></a></td> <td class="selectMe">1</td> </tr> </table> </body> </html> $(function() { $('#test').click(function() { // does not work var a = $(this).parent().addClass('afb').end().children('.selectMe').text(); // works var b = $(this).parent().children('.selectMe').text(); alert(a + ' -should have value'); alert(b + ' -works'); return false; }); });
解决方法
您正在寻找
end()方法:
var a = $(this).parent().addClass('test').end() .children('selectorHere').text();
方法:
Ends the most recent filtering
operation in the current chain and
returns the set of matched elements to
its prevIoUs state.
更新:根据您的html片段,您实际上不需要结束!关于jQuery的重要事情是,大多数非遍历方法返回一个自己的副本 – 所以如果你调用$(this).addClass(‘test’),你会得到一个$(this)的副本。
所以你的代码片段:
// does not work var a = $(this) // points at #test .parent() // now refers to the tr which holds test .addClass('afb') // still refers to the tr .end() // now we're back to #test .children('.selectMe') // empty! there are no direct children of #test which match .selectMe .text(); // empty
相反,尝试没有结束:
// works var a = $(this) // points at #test .parent() // now refers to the tr which holds test .addClass('afb') // still refers to the tr .children('.selectMe') // found the .selectMe td .text(); // returns '1'