查找使用jQuery

查找使用jQuery

问题描述:

嵌套UL LI结构的LI元素的ID

我有以下的HTML代码示例:http://pastebin.com/Mya6tPc6 这里是jQuery代码我想使用:查找使用jQuery

$("#folder1").click(function(){ 
alert($(this).attr('id')); 
}); 

$("#f1").click(function(){ 
alert($(this).attr('id')); 
}); 

这是问题所在: 如果用户点击元素'folder1',它将在警告框中显示'folder1'。没事儿。 如果用户点击'folder1.1',它会在警告框中显示'folder1',实际上我不希望它在这一点上做任何事情。 如果用户点击'f1',它将首先显示一个警告框,'f1',然后另一个警报框'folder1'。我需要它只显示一个警告框'f1'。

有人请告诉我该怎么做?该结构是目录树,因此它可以具有无限数量的深度。我需要设置它,当用户点击一个文件夹LI时,一个功能将在另一个区域显示该文件夹的内容。

我知道还有其他文件管理器,但在这种情况下我需要自己创建一个。

我已经搜索'jQuery和嵌套的UL',并在谷歌排序,但直到现在我还没有找到解决方案。我是否搜索错误的术语?

非常感谢你对你的答案。

此致敬礼, 托尼。

+1

如果您需要该元素的属性,则可以使用this.id。不必一路走来创建一个新的jQuery对象。 – 2010-10-15 15:20:46

不完全确定你想要什么,但听起来像你有事件冒泡的问题。这意味着,如果您单击一个嵌套元素,事件将首先触发该元素,然后触发其父元素,直至到达文档中的顶层元素。您可以:

1)取消事件处理后点击孩子(#f1);

$("#f1").click(function(e){ 
    e.preventDefault(); 
    alert($(this).attr('id')); 
    return false; 
}); 

2)检查事件的目标是否是当前正在处理事件的元素;看到event object

$("#folder1").click(function(e){ 
    if (e.target == e.currentTarget) { 
     // do something 
    } 
}); 
+0

我不能点击向上箭头,它需要一些点。所以我点击了你的答案。 – 2010-10-15 17:43:24

(注释框不允许我发布这个消息,所以我使用的答案框。我希望这不是一个问题。)

您好保罗,

感谢您的意见。以下运作良好:

var i=0; 

$("#folder1").click(function(e){ 
    $("#files").append(++i + ". " + $(this).attr('id')+"<br>"); 
    return false; 
}); 

$("#folder1_1").click(function(e){ 
    var me = e.currentTarget; 
    $("#files").append(++i + ". " + $(this).attr('id')+"<br>"); 
    return false; 
}); 

$("#f1").click(function(e){ 
    $("#files").append(++i + ". " + $(this).attr('id')+"<br>"); 
    return false; 
}); 

我只是为了测试目的。

e.preventDefault();在jQuery Treeview插件中效果不佳。所以我不得不删除它。似乎返回虚假;做这项工作。

此:

如果(e.target == e.currentTarget)......我想知道如果你从这个对比在任何情况下得到真正的?

我可以得到它具有以下工作:

if(e.currentTarget === this) 
    { 
     alert("Its me!"); 
    } 

我不知道这是否会在所有的browers工作,对Safari和Chrome这看起来OK。

非常感谢关于事件冒泡等事情的想法和信息。

此致敬礼, 托尼。

您好Yi Jiang,

谢谢你,你是对的。从现在开始我会这样做。

此致敬礼, 托尼。