0

我正在尝试向 A 元素添加单击功能,除非父 LI 具有某个类(.current)

以下似乎不起作用:

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

这是一个jsFiddle:

http://jsfiddle.net/WvPE7/

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

当然我错过了一些非常简单的东西......任何帮助表示赞赏!:)

4

3 回答 3

2

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

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

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

演示: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();
});
于 2013-02-14T21:29:27.610 回答
1

您可以使用以下.on()方法通过简单的委托来做到这一点:

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

.on() 您可以在此处了解更多信息。


这是在行动:http: //jsfiddle.net/WvPE7/7/

于 2013-02-14T21:34:41.760 回答
-1

转动

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

进入

$('ul').on('click', 'li:not(.current) a', function (e) {
于 2013-02-14T21:26:19.063 回答