Javascript 使用jquery选择单个li的能力
我有一个li列表,每个列表都包含一个从右侧滑出的菜单选项,但我只希望单击一次应用于一个liJavascript 使用jquery选择单个li的能力,javascript,jquery,Javascript,Jquery,我有一个li列表,每个列表都包含一个从右侧滑出的菜单选项,但我只希望单击一次应用于一个li $('#list li .swipe').click (function(i) { var t = $('.options'); var ul = t.closest('#list'); var selected = t.hasClass('selected'); ul.find('li .options').removeClass('sel
$('#list li .swipe').click (function(i) {
var t = $('.options');
var ul = t.closest('#list');
var selected = t.hasClass('selected');
ul.find('li .options').removeClass('selected');
if(!selected)
t.addClass('selected');
});
$('.options a').click(function(e) {
var id = $(this).closest("li").attr("data-id");
$(this).closest("li").fadeTo("fast", 0.01).slideUp("fast", function() {
$(this).remove();
});
e.preventDefault();
});
行动中的例子
您必须将类应用于
此
元素:
$('li .options').removeClass('selected'); // Clean the selected ones
if(!selected)
$(this).addClass('selected'); // Apply to the clicked one
使用以下命令:
var t = $(this).next('.options');
当您说$('.options')
时,它匹配所有选项,而不仅仅是单击DIV之后的选项
如果我正确理解您的要求,以下就是您所需要的:
$('#list li .swipe').click (function(i) {
$('.options').not( $(this).next().toggleClass('selected') )
.removeClass('selected');
});
演示:
或者如果这看起来很混乱:
$('#list li .swipe').click (function(i) {
var $current = $(this).next().toggleClass('selected');
$('.options').not( $current ).removeClass('selected');
});
或允许对html结构进行细微更改:
$('#list li .swipe').click (function(i) {
var $current = $(this).closest('li')
.find('.options')
.toggleClass('selected');
$('.options').not( $current ).removeClass('selected');
});
演示:
也就是说,首先用
$(this)
选择单击的元素,然后导航到相关的'。选项“
div.“我只希望单击一次应用于一个li。”-哪一个?您可以不按特定顺序单击它们。我的意思是,您如何知道单击应该应用于哪个li?或者我的意思是我不知道你的意思。你能更详细地解释一下你的要求吗?我只是想知道右边的选项是什么,一次只显示一个,当前它们都显示在一次单击上。当你选择一行时,你并没有取消选择其他行。@Barmar-好的观点。对我来说,过于热情的简化。答案已更新。所选
必须添加到选项
元素中,您正在将其应用到单击的。轻扫
。