我有一个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('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();
});
答案 0 :(得分:1)
答案 1 :(得分:1)
如果我理解您的要求,您只需要以下内容:
$('#list li .swipe').click (function(i) {
$('.options').not( $(this).next().toggleClass('selected') )
.removeClass('selected');
});
演示:http://jsfiddle.net/V8Qvy/5/
或者如果这看起来很混乱:
$('#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');
});
演示:http://jsfiddle.net/V8Qvy/6/
也就是说,首先选择带有$(this)
的点击元素,然后导航到相关的'.options'
div。
答案 2 :(得分:0)
您必须将该类应用于this
元素:
$('li .options').removeClass('selected'); // Clean the selected ones
if(!selected)
$(this).addClass('selected'); // Apply to the clicked one