【问题标题】:if we're at default and no other options were chosen, do nothing. if were back at default from other options, do something如果我们处于默认状态并且没有选择其他选项,则什么也不做。如果从其他选项恢复默认,做点什么
【发布时间】:2015-06-30 04:43:50
【问题描述】:

我的默认值是 2 var items = [2],并且点击事件会根据点击来回将值从 2 更改为 3。因为默认值为 2,所以当用户单击 li 中的 2 选项时,什么都不会发生(这就是我想要的),因为不需要进行任何更改。只有当用户单击任何其他选项时,他们才能单击 2 选项以使用 2 功能(他们将能够单击它但不会出现任何功能)。我想我需要逻辑方面的帮助

      $(document).ready( function(){
        var items = [2]
        $('ul  > li > span').on('click', function(e){

            if($(this).siblings("ul").is(":visible")){
                $(this).siblings("ul").slideUp("fast")
            }else{
                $(this).siblings("ul").slideDown("fast")
            }

        })
        $('ul.adding li ul li').on("click" , function(e){
            if($(e.target).hasClass('twoItems')){
                if(items[0] !== 2){
                    //this is messed up
                    items[0] = 2
                    $('.output').append(items[0])
                }else{
                    $('.output').append(items[0])
                }

            }
            if($(e.target).hasClass('threeItems')){
                items[0] = 3
                $('.output').append(items[0])
            }
            console.log(items)

        })
        $('.output').append(items[0])


    });

html:

<div class="container">
    <ul class = "adding">
        <li><span class = "span">Add</span> <ul>
            <li class="twoItems">Two Item</li>
            <li class = "threeItems">three items</li>
        </ul></li>

    </ul>
</div>

<div class="output"></div>

【问题讨论】:

    标签: javascript jquery events logic


    【解决方案1】:

    尝试从$('ul.adding li ul li').on("click"处理程序中删除else语句

    $(document).ready(function() {
      var items = [2]
      $('ul  > li > span').on('click', function(e) {
    
        if ($(this).siblings("ul").is(":visible")) {
          $(this).siblings("ul").slideUp("fast")
        } else {
          $(this).siblings("ul").slideDown("fast")
        }
    
      })
      $('ul.adding li ul li').on("click", function(e) {
        if ($(e.target).hasClass('twoItems')) {
          if (items[0] !== 2) {
            items[0] = 2
            $('.output').append(items[0])
          }
    
        }
        if ($(e.target).hasClass('threeItems')) {
          items[0] = 3
          $('.output').append(items[0])
        }
        console.log(items)
    
      })
      $('.output').append(items[0])
    
    
    });
    <div class="container">
      <ul class="adding">
        <li><span class="span">Add</span> 
          <ul>
            <li class="twoItems">Two Item</li>
            <li class="threeItems">three items</li>
          </ul>
        </li>
    
      </ul>
    </div>
    
    <div class="output"></div>
    
    <div class="output"></div>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <div class="container">
      <ul class="adding">
        <li><span class="span">Add</span> 
          <ul>
            <li class="twoItems">Two Item</li>
            <li class="threeItems">three items</li>
          </ul>
        </li>
    
      </ul>
    </div>
    
    <div class="output"></div>

    【讨论】:

    • 感谢您的回答,我刚刚查看了您的 sn-p。它擅长显示“两个项目”的位置,您在单击“三个项目”之前单击它,没有任何反应。当您单击其他项目时,会出现 3。那挺好的。但是当我再次单击“两个项目”时,我希望 2 出现在输出中。我看到你的编辑就像 2322222223322 一次只有 1 个“2”出现。对不起
    猜你喜欢
    • 1970-01-01
    • 2020-11-06
    • 2019-08-25
    • 1970-01-01
    • 2011-05-22
    • 2017-09-22
    • 2012-09-05
    • 2019-12-12
    • 1970-01-01
    相关资源
    最近更新 更多