当父LI具有类时,从单击函数中排除

时间:2013-02-14 21:24:10

标签: jquery

我正在尝试向A元素添加一个click函数,除非父LI有一个特定的类(.current)

以下似乎不起作用:

$('ul li:not(.current) a').click(function (e) {

这是一个jsFiddle:

http://jsfiddle.net/WvPE7/

我不希望点击功能执行'ul li.current a' - 只是'ul li a'(没有.current)

当然,我错过了一些非常简单的事情...任何帮助表示感谢! :)

3 个答案:

答案 0 :(得分:2)

您应该添加一个小条件,而不是使用:not('.current')

if ($(this).parent().hasClass('current')) return;

当您运行$('ul li:not(.current) a')时,事件将被绑定,此时,没有类当前的li。

DEMO: http://jsfiddle.net/WvPE7/5/

完整代码:

$('ul li a').click(function (e) {
    e.preventDefault();

    if ($(this).parent().hasClass('current')) return;

    $('p').hide();
    $('li').removeClass('current');
    $(this).parent().addClass('current');
    var myClass = $(this).attr('class');
    $('p.' + myClass).fadeIn();
});

答案 1 :(得分:1)

您可以使用.on()方法进行简单委派:

$('ul').on('click', 'li:not(.current) a', function(e) {
    // ...
});

您可以详细了解.on() here


这里有效:http://jsfiddle.net/WvPE7/7/

答案 2 :(得分:-1)

$('ul li:not(.current) a').click(function (e) {

$('ul').on('click', 'li:not(.current) a', function (e) {