JavaScript 多个 li 绑定同一个事件该如何处理

youngbye · 2014年10月20日 · 最后由 lazing 回复于 2014年11月18日 · 6514 次阅读

场景如下:

  • 1
  • 2
  • 3
  • 假设他们都绑定了一个 click 事件,例如点击数字为 1 的 li,div 显示出来并显示数字 1

    1 , 在点击一次,把 div 隐藏。 问题:假设我在点击数字 1 的 li 的时候,这时候我没有再次点击而是去点击了数字为 2 的 li,需要什么一个操作能够实现先讲数字为 1 的 div 先隐藏,再显示数字为 2 的 div
    $('ul').on('click', function(event){
      $('div').hide();
    
      $clickedItem = $(event.target);
      index = $(this).children().indexOf($clickedItem) + 1;
    
      $('div').text(index).show();
    })
    

    上面的代码只是一个基本思路,请按照自己需求修改一下

    点之前都遍历 li 隐藏。

    $("ul").on("click",function(e){ var t=e.target; if(t.tagName=="LI") { var i=t.innserHTML; var div=$("div"); div.html()==i? div.hide() : div.html(i).show();
    } });

    $(document).ready(function(){
      $('ul li').click(function(){
        $('div').removeClass('hidden').addClass('show').text($(this).text());
      });
      $('div').click(function(){
        $(this).removeClass('show').addClass('hidden');
      });
    });
    

    dom 是个树,绑定到其共有上级节点即可。

    事件是传递的。

    需要 登录 后方可回复, 如果你还没有账号请 注册新账号