如何防止jQuery函数重复?

Goo*_*bot 6 javascript jquery load slidetoggle

我有一个简单的jQuery函数

$('.button').click(function(){
   $("#target").slideToggle().load('http://page');
});
Run Code Online (Sandbox Code Playgroud)

slideToggle行为,每次点击都会导致幻灯片,但问题是它会url再次加载.

如何限制load()只执行一次的功能,但slideToggle()每次点击都要限制.换句话说,如何load()在后续点击中防止(仅加载,而不是整个功能)?

Tho*_*son 8

有一个变量(全局),表示它是否已被加载.例如:

var loaded = false;
$('.button').click(function(){
   if(!loaded){
      $('#target').load('http://page');
      loaded = true;
   }
   $("#target").slideToggle();
});
Run Code Online (Sandbox Code Playgroud)

这将导致slideToggle在每次单击时发生,但页面只加载一次.:)


and*_*lrc 8

$('.button')
    .on('click.loadPage', function() {
        $("#target").load('http://page');
        $(this).off("click.loadPage");
    })
    .on('click.slideToggle', function(){
        $("#target").slideToggle();
    });
Run Code Online (Sandbox Code Playgroud)

以及没有全球变量的另一种方式:

$('.button')
    .on('click', function() {
        if ( !$(this).data("loaded") ) {
            $("#target").load('http://page');
            $(this).data("loaded", true);
        }
        $("#target").slideToggle();
    });
Run Code Online (Sandbox Code Playgroud)