首页 新闻 搜索 专区 学院

$(this).find();

0
悬赏园豆:20 [已解决问题] 解决于 2014-08-05 12:10
 问个问题

 



上面和下面的代码不应该是同一个意思吗, 为什么上面的能够实现功能, 下面的不能实现,我确定navTextTwo在microSpecialty下 
HANXUEAO的主页 HANXUEAO | 初学一级 | 园豆:13
提问于:2014-08-05 08:49
< >
分享
最佳答案
0

看起来是一个意思的,不过你圈中的位置有错。

收获园豆:20
乐享程序员 | 小虾三级 |园豆:930 | 2014-08-05 09:31

嗯 是我圈错了

这是获取页面中所有class为navTextTwo的对象, 而我只想控制microSpecialty下的navTextTwo对象所以就用了$(".microSpecialty").find(".navTextTwo"), 这个方法应该没错, 所以我怀疑是不是在animate的回调函数中不能使用, 试过在回调函数中使用$(this).find()是没有问题的, 可是$(".navTextTwo").animate方法是写在 $(this).find(".navTextOne").animate的回调函数里面, 等于是在子级中实现父级中另一个子级的动画,用this肯定不行,好像只能用$(".microSpecialty").find(),但它又不能实现所以就纠结了, 求帮忙看一下是我的代码写的有问题还是有另外的其他方法能够解决我描述的问题.

HANXUEAO | 园豆:13 (初学一级) | 2014-08-05 09:33

@HANXUEAO: 

你上面的代码,理论上是没有错的。

想要获取到.microSpecialty下的navTextTwo,方法很多呀:

find不好使,那你就试试:

使用CSS选择器:$(".microSpecialty .navTextTwo")

乐享程序员 | 园豆:930 (小虾三级) | 2014-08-05 09:43

@螺 丝 钉: 这个方法也试过了的, 

DOM结构中明明是子级没错但是就是不行

HANXUEAO | 园豆:13 (初学一级) | 2014-08-05 09:50
其他回答(2)
0

上面定位的是 .navTextTwo, 下面看你定位的是 .navTextOne 哦? 是不是写错了

Yu | 园豆:12944 (专家六级) | 2014-08-05 09:04

这是获取页面中所有class为navTextTwo的对象, 而我只想控制microSpecialty下的navTextTwo对象所以就用了$(".microSpecialty").find(".navTextTwo"), 这个方法应该没错, 所以我怀疑是不是在animate的回调函数中不能使用, 试过在回调函数中使用$(this).find()是没有问题的, 可是$(".navTextTwo").animate方法是写在 $(this).find(".navTextOne").animate的回调函数里面, 等于是在子级中实现父级中另一个子级的动画,用this肯定不行,好像只能用$(".microSpecialty").find(),但它又不能实现所以就纠结了, 求帮忙看一下是我的代码写的有问题还是有另外的其他方法能够解决我描述的问题.

支持(0) 反对(0) HANXUEAO | 园豆:13 (初学一级) | 2014-08-05 09:32

@HANXUEAO:

第二张图中,没看到你有用 $(".microSpecialty").find(".navTextTwo")的地方,

如果是你提供的图有问题,请更新!

支持(0) 反对(0) Yu | 园豆:12944 (专家六级) | 2014-08-05 11:33
0

这个一不一样需要根据你的文档结构来看。

图一中,只是对包含class"navTextTwo"的元素设置动画。

图二中,是在$('.microSpecialty')中找到包含class"navTextOne"的元素,有一个父级的限定条件。

幻天芒 | 园豆:36594 (高人七级) | 2014-08-05 09:39

不好意, 第一张图是我圈错了,

这是获取页面中所有class为navTextTwo的对象, 而我只想控制microSpecialty下的navTextTwo对象所以就用了$(".microSpecialty").find(".navTextTwo"), 这个方法应该没错, 所以我怀疑是不是在animate的回调函数中不能使用, 试过在回调函数中使用$(this).find()是没有问题的, 可是$(".navTextTwo").animate方法是写在 $(this).find(".navTextOne").animate的回调函数里面, 等于是在子级中实现父级中另一个子级的动画,用this肯定不行,好像只能用$(".microSpecialty").find(),但它又不能实现所以就纠结了, 求帮忙看一下是我的代码写的有问题还是有另外的其他方法能够解决我描述的问题.

支持(0) 反对(0) HANXUEAO | 园豆:13 (初学一级) | 2014-08-05 09:52

@HANXUEAO: 

代码的差别只有那一行,在某个navTextOne动画效果完毕后:左边的代码是$(this)是动画效果的这个navTextOne,右边的是所有的navTextOne

支持(0) 反对(0) 乐享程序员 | 园豆:930 (小虾三级) | 2014-08-05 10:07

@螺 丝 钉: 原因在于你嵌套了多层,导致this这个对象在不同的作用域具有不同的含义。你可以做对象缓存。

var $self=$(this);这样每次用$self就是同一个对象了。

支持(0) 反对(0) 幻天芒 | 园豆:36594 (高人七级) | 2014-08-05 10:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册