jQuery - 导航 - 如果找到特定的 id,则执行某些操作。
我似乎无法理解我在这里做错了什么。
在某种程度上,我的代码确实有效,但它不是找到被单击元素的 id
,而是找到所有 id
http://jsfiddle.net/34a5b/ - 我将其设置为动画,以便您可以看到它找到了 #item1
然后#item2
我正在寻找的基本功能如下:
当点击 li 时 >查找特定 ID >做功能 对应那个特定的id
关于为什么这不起作用的任何想法?
var $Nav= $('#Nav');
var $Boxee= $('#BoxeeBox');
$Nav.each(function(){
$(this).find('li').click(function() {
if( $(this).find('#item1') ){
$Boxee.animate({ backgroundColor:'blue' });
}
if( $(this).find('#item2') ){
$Boxee.animate({ backgroundColor:'red' });
}
});
});
现在我想知道为什么我把 $nav.each...
我也试图找出更动态/更简单的方法来做类似的事情,但我无法弄清楚...惊喜惊喜...如果有人的话我会很感激也可以为我指出那个方向(尽管我仍然想知道为什么我的代码不起作用)
I cant seem to understand what i'm doing wrong here.
To certain extend my code does work but instead of finding the id
of the clicked element, it finds all the id
s
http://jsfiddle.net/34a5b/ - I put it to animate so you can see that it finds #item1
and then #item2
The basic functionality I'm looking for goes like this:
When li is clicked > find specific id > do the functionality
corresponding that specific id
Any ideas on why this doesnt work?
var $Nav= $('#Nav');
var $Boxee= $('#BoxeeBox');
$Nav.each(function(){
$(this).find('li').click(function() {
if( $(this).find('#item1') ){
$Boxee.animate({ backgroundColor:'blue' });
}
if( $(this).find('#item2') ){
$Boxee.animate({ backgroundColor:'red' });
}
});
});
Now i wonder why i put $nav.each....
I was also trying to figure out more dynamic/simpler way of doing something like that but I couldnt figure that out.. surprise surprise... I'd appreciate if someone could point me to the direction with that one as well ( though I'd still like to know why my code doesnt work )
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您不必循环遍历
$Nav
。如果您说$('#Nav li').click(...)
,jQuery click 将绑定到所有li
您的代码不起作用的原因是:
$(this).find('#item1')
- 这里$(this)
表示li
,所以你正在努力寻找#item1
本身。已修复: http://jsfiddle.net/34a5b/1/
稍微好一点(性能)的版本是使用
.delegate
( http://jsfiddle.net/34a5b/9/ ):You don't have to loop thru
$Nav
. jQuery click will bind to allli
if you say$('#Nav li').click(...)
Reason for your code to not work is:
$(this).find('#item1')
- here$(this)
means theli
, so you're tyring to find#item1
within itself.Fixed: http://jsfiddle.net/34a5b/1/
Slightly better (performant) version is to use
.delegate
( http://jsfiddle.net/34a5b/9/ ):不知道你为什么使用每个功能。以下代码将
在 http://jsfiddle.net/34a5b/10/ 处检查 Fiddle
In don't know why you are using each function. Following code will do
check Fiddle at http://jsfiddle.net/34a5b/10/