禁用Jquery功能

时间:2016-09-25 02:05:00

标签: jquery function

我在JQuery中有两个函数

jQuery.fn.funct1= function(a,b,c){
 //code ...load() by scrolling from results.php
 //  in ul#total_results (sql="SELECT ABC") 100 RESULTS
    //$("#total_results").append(data);
                             }

jQuery.fn.funct2= function(m,n,p){
//code ...load() by scrolling from results.php 
//   in ul#total_results (sql="SELECT MNP") 30 RESULTS
    //$("#total_results").append(data);                                          }

我触发第一个功能默认显示在页面

  $(document).ready(function() {    
       $("#total_results").funct1(a,b,c);
    });

但是一旦我点击第二个锚点来运行第二个功能,滚动页面时会在第一个函数中显示加载的结果。我希望第一个功能被禁用,而另一个功能正在工作,反之亦然。

<a onclick="$('#total_results').funct1(a,b,c);">Show results funct 1</a>
 <a onclick="$('#total_results').funct2(m,n,p);">Show results funct 2</a>

 <ul id=total_results></ul>

我想点击第一个锚点以显示funct1的结果,然后点击第二个锚点以显示funct2的结果。

我尝试了一个布尔值,创建了noShowFunct1=true & noShowFunct1=false ;但没有任何内容,以及jQuery.fn.funct1=null,但没有。尝试window.onload= funct1,然后window.onload=null点击funct2后的锚点,它也无法正常工作。这是结构https://jsfiddle.net/2mkc4w3e/3/

的更新小提琴

1 个答案:

答案 0 :(得分:0)

此语法不正确:

<a onclick="$("#total_results").funct1(a,b,c);">Show results funct 1</a>
<a onclick="$("#total_results").funct2(m,n,p);">Show results funct 2</a>

您必须转义双引号,否则请使用单引号:

<a onclick="$('#total_results').funct1(a,b,c);">Show results funct 1</a>
<a onclick="$('#total_results').funct2(m,n,p);">Show results funct 2</a>

但如果你将处理程序代码与HTML分开会更好:

<a href="#" id="a1">Show results funct 1</a>
<a href="#" id="a2">Show results funct 2</a>

<script>
     $('#a1').click(function () {
         $('#total_results').funct1(a,b,c);
     });
     $('#a2').click(function () {
         $('#total_results').funct2(m,n,p);
     });
</script>

&#13;
&#13;
$.fn.funct1 = function(a,b,c) {
    $(this).text('a='+a+'\nb='+b+'\nc=' +c);
}
$.fn.funct2 = function(m,n,p) {
    $(this).text('m='+m+'\nn='+n+'\np=' +p);
}

var a=1,b=1,c=1,m=2,n=2,p=2;

$('#a1').click(function () {
    $('#total_results').funct1(a,b,c);
});
$('#a2').click(function () {
    $('#total_results').funct2(m,n,p);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#" id="a1">Show results funct 1</a>
<a href="#" id="a2">Show results funct 2</a>
<div id="total_results"></div>
&#13;
&#13;
&#13;

&#34;停止&#34;异步代码

你提供了这个代码(有一些错误),我在其中添加了一个变量currentFunc,以确保只有两个函数中的一个可以写入total_results元素。

var curr_func = null;

$.fn.funct1= function(total_groups){
    loading=false;
    total_groups=0;
    curr_func = 1; // remember that this function is activated
    $("#total_results").load("results.php",function(){
        if (curr_func !== 1) return; // other function is active! 
        total_groups++
    })

    If(/* scrolling page criteria or so*/ ) {
        loading = true;
        $.post("results.php", function() {
            if (curr_func !== 1) return; // other function is active! 
            $("#total_results").append(data);
        }
    }
}

你会在另一个函数中做同样的事情,但是然后设置并测试值2。

在您可能从任一函数触发的每个异步代码中添加if (curr_func ...)测试(即在回调函数中)。