【问题标题】:Allow just one click in class JQUERY只允许在 JQUERY 类中单击一次
【发布时间】:2022-02-16 22:28:05
【问题描述】:

我有一个链接,可以通过 ajax 加载一些内容。

我的问题是,我不想删除文本“Load cmets”,我只想在此类中不允许更多点击。

<a href="javascript:;" class="showcomments" id="'.$idf.'">Load comments</a>

jQuery

var Progressajax = false;
$(function() {
     $(".showcomments").click(function(){
    
               if(Progressajax) return;
                   Progressajax = true;
    
    var element = $(this);
    var id = element.attr("id");
       
    Progressajax = false;
           alert("ok");
           $(data).hide().prependTo('.varload'+id).fadeIn(1000);
         //$(element).remove();
        $(element).removeAttr("href");
        $(element).removeClass('showcomments');
    }); 
    });
        

我只想第一次看到OK。如何删除此类?

$(element).removeClass('showcomments');

这不行……

http://jsfiddle.net/qsn1tuk1/

【问题讨论】:

  • $('.showcomments') 将找到所有具有该类的元素,并将点击处理程序附加到它们。如果您稍后删除该类,则不会对单击处理程序执行任何操作。您必须删除单击处理程序本身,或者让处理程序检查元素是否仍然具有适当的类
  • 听起来你想使用$.off() 来关闭一个类的监听器。 Here 是上面的文档。

标签: javascript jquery ajax event-handling jquery-events


【解决方案1】:

使用jQuery的one()函数

$(".showcomments").one("click", function() {

http://www.w3schools.com/jquery/event_one.asp

one() 方法为所选元素附加一个或多个事件处理程序,并指定事件发生时要运行的函数。

当使用 one() 方法时,事件处理函数只对每个元素运行一次。

【讨论】:

    【解决方案2】:

    当你绑定一个事件处理程序时,你绑定到元素,而不是。从元素中删除类不会更改绑定到元素的事件处理程序。

    您可以使用off() 删除事件处理程序:

    $(this).off('click');

    http://jsfiddle.net/om6ggvyu/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-10
      • 1970-01-01
      • 2021-12-21
      • 1970-01-01
      相关资源
      最近更新 更多