Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jquery选择单个li的能力_Javascript_Jquery - Fatal编程技术网

Javascript 使用jquery选择单个li的能力

Javascript 使用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

我有一个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(); 
});
行动中的例子

您必须将类应用于
元素:

$('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-好的观点。对我来说,过于热情的简化。答案已更新。
所选
必须添加到
选项
元素中,您正在将其应用到单击的
。轻扫