我正在尝试向A元素添加一个click函数,除非父LI有一个特定的类(.current)
以下似乎不起作用:
$('ul li:not(.current) a').click(function (e) {
这是一个jsFiddle:
我不希望点击功能执行'ul li.current a' - 只是'ul li a'(没有.current)
当然,我错过了一些非常简单的事情...任何帮助表示感谢! :)
答案 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。
答案 2 :(得分:-1)
转
$('ul li:not(.current) a').click(function (e) {
到
$('ul').on('click', 'li:not(.current) a', function (e) {