使用jQuery对切换元素进行适当的条件处理

时间:2016-03-23 00:54:18

标签: javascript jquery html ajax

$(document).ready(function() {

    $(".media").hide();

    $(".infobox").click(function(event) {
        var isVisible = $("."+event.currentTarget.id).is(":visible");
        if(isVisible) {
            $("."+event.currentTarget.id).slideToggle(100);
        }
        else {
            $("."+event.currentTarget.id).slideToggle(100);
            $("#media"+event.currentTarget.id).load("/mediabox/"+event.currentTarget.id);
        }
    });
});

当用户点击某个元素时,我想切换一个要显示的框,然后使用ajax加载一些内容。一切正常。但是当它再次被点击时,我希望它切换为隐藏而不是再次加载内容。

目前,它将切换取消隐藏并加载ajax。再次单击时,它只是重新加载ajax,元素仍然可见。

对此javascript newb的任何指导都将不胜感激。

3 个答案:

答案 0 :(得分:0)

您可以使用计数器/布尔值,当显示该元素时,请检查计数器/布尔值。如果counter / boolean仍然等于它的原始值,则加载ajax并更改它的值。或者,您可以在第一次加载ajax时向元素添加数据属性,然后在显示元素时始终检查该数据属性是否存在。如果存在,请不要加载ajax数据。

http://codepen.io/partypete25/pen/EKmyNb

if (!$div.data("loaded")) {
    $div.data("loaded", true);
    //load ajax data
  }

答案 1 :(得分:0)

$(function () {
    var isEverLoadContent = false;
    $('.media').hide();

    // your code above
    else {
        if (!isEverLoadContent) {
            // Perform ajax request
            // if done set to true
            isEverLoadContent = true;
        }
        // Your next task
    }
    // Continue your code
});

答案 2 :(得分:0)

我重新创建了您的问题,以便直观地演示如何根据您的要求制作活动。在我的例子中,div只会在第二次点击时变大,但不会在任何其他点击时变大。你可以将它应用到你的加载问题..这个过程就是我喜欢称之为标记的过程。它与设置变量有关,因此您可以控制函数或语句的流程



$(document).ready( function(){
  var happend = false;
  $("div").click(function(event){
    if($(this).css("background-color") != "rgb(0, 128, 0)" ){
      $(this).css("background-color", "green")
      console.log($(this).css("background-color"))
      // happend = false
    }else{
      $(this).css("background-color", "blue")
      if(!happend){
        $(this).animate({"height" : "+=50"})
        happend = true
      }


    }
  })
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div>button</div>
&#13;
&#13;
&#13;

我没有测试它,因为我现在无法进入AJAX。但我想知道它是否适合你或给你一些想法。它可能不适合你,因为我没有研究你的代码所做的一切,但你可以根据自己的喜好调整模式。

$(document).ready(function(){
    var happend =false;
    $(".media").hide();

  $(".infobox").click(function(event){
        var isVisible = $("."+event.currentTarget.id).is(":visible");
        if ( isVisible ) {
            $("."+event.currentTarget.id).slideToggle(100);
        }
        else {
            $("."+event.currentTarget.id).slideToggle(100);
            if(!happend){
                 $("#media"+event.currentTarget.id).load("/mediabox/"+event.currentTarget.id);
                 happend = true
            }

        }

    });

});