jQuery:在另一个内部的元素,通过单击第一个来检查第二个

时间:2012-01-25 17:41:50

标签: jquery html jquery-selectors

很抱歉这个标题无法理解。

我有这个:

<a class="directory">
    Directory 1
    <a class="add">Add a file</a> //show/hide on mouseover
</a>

有:

enter image description here

当我点击第一个<a>来查看文件时,我会切换:

$('a.directory').click(function() {
    $(this).parent().find('ul:first').slideToggle('medium');
});

我点击第二个<a>时添加了一个文件。

当我点击第二个<a>时,如何检查我是否只是点击了第一个<a>以避免打开文件夹?

我试试这个但不起作用:

$('a.directory:not(.add)').click(function() {
    $(this).parent().find('ul:first').slideToggle('medium');
});

2 个答案:

答案 0 :(得分:2)

由于您的第二个链接已经上课,您可以将其用于您的利益:

$('a.directory:not(.add)').click(function(e) {
    if (e.target.className === 'add') return false;
    $(this).parent().find('ul:first').slideToggle('medium');
});

请注意添加:

if (e.target.className === 'add') return false;

当你点击你正在寻找的第二个添加文件链接时,这将失去功能。


此外,您当前的加价无效。你需要尝试修复它。

答案 1 :(得分:1)

将第二个<a>从第一个中拉出来,无论如何都是无效的HTML。然后你可以使用CSS格式化以获得相同的风格效果。

<a class="directory">
     Directory 1
</a>
<a class="add">Add</a>

您的选择器应该按照您的预期工作。