我在将类应用于前一个元素或下一个元素时遇到了问题。
<a href="#"><span class="glyphicon glyphicon-thumbs-up up"></span>
<a href="#"><span class="glyphicon glyphicon-thumbs-down down"></span>
当我点击第一个跨度时,我想禁用第二个跨度,反之亦然。
$(document).on('click','.up, .down',function (e){
e.preventDefault();
if ($(this).hasClass('up')){
var down = $(this).parent().nextAll('a.comment-vote-down');
down.removeClass('disable-link').addClass('disable-link');
}else if($(this).hasClass('down')){
var up = $(this).parent().prevAll('a.comment-vote-up');
up.removeClass('disable-link').addClass('disable-link');
}
});
答案 0 :(得分:1)
您尝试查找HTML代码中不存在的课程.comment-vote-down
答案 1 :(得分:0)
试试这个:
$(document).on('click','.up, .down',function (e){
e.preventDefault();
if ($(this).hasClass('up')){
var down = $(".down");
down.removeClass('disable-link').addClass('disable-link');
}else if($(this).hasClass('down')){
var up = $(".up");
up.removeClass('disable-link').addClass('disable-link');
}
});
答案 2 :(得分:0)
这是因为你没有一个带有.comment-vote-down或者评论投票的类。
将该部分从你的下一个选择中取出:
.nextAll('a');
https://jsfiddle.net/xnovq390/1/
或者,将类添加到HTML中:
<a href="#" class="comment-vote-up">
答案 3 :(得分:0)
如果.up
元素始终是.down
元素中的上一个元素,则可以执行以下操作:
$(document).on('click', '.up, .down', function(e) {
e.preventDefault();
if ($(this).hasClass('up')) $(this).next().addClass('disable-link');
else $(this).prev().addClass('disable-link');
}
答案 4 :(得分:0)
$(document).on('click','.up, .down',function (e){
e.preventDefault();
if ($(this).hasClass('up')){
$(this).addClass('disable-link');
$('span.down').removeClass('disable-link');
}else if($(this).hasClass('down')){
$(this).addClass('disable-link');
$('span.up').removeClass('disable-link');
}
});
答案 5 :(得分:0)
正如其他答案已经陈述的那样,没有带有.comment-vote-down
类的 spoon 元素。
但另外为了让生活更轻松,你可以缓冲2个元素,将点击绑定到它们并禁用未点击的元素,将代码减少到
var btns = $('.up, .down');
btns.click(function(){
btns.not(this).addClass('disable-link');
});
如果您要禁用包含a
,可以通过链接父()btns.not(this).parent().addClass('disable-link');
(或.closest('a')
,如果存在更深的层次结构)来获取其他父项