GVKun编程网logo

javascript-如何使用jQuery禁用单击事件一段时间?

27

对于想了解javascript-如何使用jQuery禁用单击事件一段时间?的读者,本文将是一篇不可错过的文章,并且为您提供关于Javascript/jQuery/etc中的方法,用于测量经过一段时间后

对于想了解javascript-如何使用jQuery禁用单击事件一段时间?的读者,本文将是一篇不可错过的文章,并且为您提供关于Javascript / jQuery / etc中的方法,用于测量经过一段时间后经过的时间/触发事件、javascript – Jquery ajax按钮单击事件两次触发?、javascript – Jquery中的开/关单击事件、javascript – Jquery删除并添加单击事件的有价值信息。

本文目录一览:

javascript-如何使用jQuery禁用单击事件一段时间?

javascript-如何使用jQuery禁用单击事件一段时间?

我有一棵左树.它的结构是这样的

    MainCategory
      Category1
        Subcategory1
        Subcategory2
      Category2
        Subcategory3
        Subcategory4
        Subcategory5
      Category3
      .
      .. etc like that      

如果用户单击MainCategory / Category / Subcategory中的任何一个,我需要禁用/阻止重复/多次单击同一链接,直到结果出现.如何使用jquery做到这一点?

解决方法:

如果您使用jQuery 1.7,则可以使用off()和on()功能

例:

var foo = function () {
    // code to handle some kind of event
};

// ... Now foo will be called when paragraphs are clicked ...
$("body").on("click", "p", foo);


// ... foo will no longer be called.
$("body").off("click", "p", foo); 

如果您使用旧版本,则可以unbind()和bind()事件

例:

var foo = function () {
    // code to handle some kind of event
};

// ... Now foo will be called when paragraphs are clicked ...
$("body p").bind("click", foo);

// ... foo will no longer be called.
$("body p").unbind("click");

Javascript / jQuery / etc中的方法,用于测量经过一段时间后经过的时间/触发事件

Javascript / jQuery / etc中的方法,用于测量经过一段时间后经过的时间/触发事件

我正在尝试使用 HTML5( Javascript)制作一个简单的游戏.我想把时间限制在事件上.例如,当玩家进入屋顶正在关闭的房间时,我想给他们一些秒钟来做出决定,然后自动发生其他事件.但是,如果他们做出决定,我根本不想要定时功能.

我怎样才能完成这样的事情?

解决方法

为此,我喜欢使用自定义Timer类

var Timer = function(callback,delay,autoRun){

                this.running = (autoRun == undefined)?true:autoRun;
                this.completed = false;
                this.delay = delay;
                this.callback = callback;
            };

            Timer.prototype.pause = function() {
                this.running = false;
                return this;
            };

            Timer.prototype.resume = function() {
                this.running = true;
                return this; 
            };

            Timer.prototype.finish = function(){
                      this.running = false;
                      this.completed = true;
                       this.callback();
                       return this;
            };

您只需创建一个新的计时器,将其添加到计时器列表中,这些计时器将使用您的主绘制循环以固定的数量更新(20ms是好的).因此,如果您的游戏滞后,用户不会受到惩罚;)

例如:
    var listofTimers = [];

function draw(){
    //Called every frame
    for(var i = 0; i<listofTimers.length; i++){
        if(listofTimers[i].running){ 
            listofTimers[i].delay -= 20;

            if(listofTimers[i].delay <= 0){
                listofTimers[i].finish();
        }
    }

    //The rest of your draw logic...
}

javascript – Jquery ajax按钮单击事件两次触发?

javascript – Jquery ajax按钮单击事件两次触发?

我有一个Employee页面,其中显示了具有编辑选项的员工列表.单击编辑按钮时,jquery-ajax用于从服务器获取数据.
问题是,当我单击编辑按钮时,事件将触发两次.

我正在使用一个单独的js文件,并将该文件引用到主页面.脚本工作正常,直到我将其移动到单独的js文件.

Jquery脚本是

//ajaxGet on edit button click
$(document).on('click','.editRole',ajaxGet);

 var ajaxGet = function (e) {       


    var spinner = $(this).parent('div').find('.spinner');
    var href = $("#editMenuSettings").data("url");
    var menuRoleId = $(this).data('id');

    spinner.toggle(true);

    var options = {
        type: "GET",url: href,data: { menuRoleId: menuRoleId }
    };

    $.ajax(options).success(function (data) {
        spinner.toggle(false);
        $(".modal-body").html(data);
        $(".modal").modal({
            backdrop: 'static'
        });
    });

    $.ajax(options).error(function (data) {
        spinner.toggle(false);
        toastr.error("Oops..some thing gone wrong");
    });

    return false;

};

解决方法

你两次调用$.ajax.

在线

$.ajax(options).success(function(data)...

$.ajax(options).error(function(data)...

你实际上做了两个不同的AJAX调用 – 一个只有成功回调,另一个有错误回调.

在您的情况下,您的通话应如下所示:

var options = {
    type: "GET",data: { menuRoleId: menuRoleId }
};

$.ajax(options)
    .success(function (data) {
        spinner.toggle(false);
        $(".modal-body").html(data);
        $(".modal").modal({
            backdrop: 'static'
        });
    })
    .error(function (data) {
        spinner.toggle(false);
        toastr.error("Oops..some thing gone wrong");
    });

return false;

它会将回调设置为单个AJAX调用并执行此调用.

javascript – Jquery中的开/关单击事件

javascript – Jquery中的开/关单击事件

我正在尝试打开和关闭点击事件以防止多个函数调用.以下是我的代码.点击是关闭但我似乎无法再打开它.思考?

$("#element").click(function(){
     doit();
     $(this).off('click');
 })

function doit(){

    do stuff...

    //turn click back on
    $("#element").on('click');

}

解决方法:

您需要将处理程序传递回on方法,也可以使用.one(),因为您只需要触发一次

function clickHandler() {
    doit();
}
$("#element").one('click', function () {})

function doit() {
    //do stuff...

    //turn click back on
    $("#element").one('click', clickHandler);
}

javascript – Jquery删除并添加单击事件

javascript – Jquery删除并添加单击事件

是否可以删除而不是将click事件添加到特定元素?即

我有一个$(“#elem”).click(function {// some behavior});,$(“.elem”).click(function {// some behavior});(有多个元素)我的其他函数getJson正在执行我想从#elem中删除click事件,并从getJson函数再次添加它,但是整个时间都保留了mouseenter和mouseleave事件?

或者也许创建叠加以防止在模态窗口中点击?这是更好的主意吗?

编辑:

我已经看到了一些非常好的答案,但有一个细节我没有故意省略.有多个元素,我调用className上的click函数而不是我在原始问题中所说的elementId上

解决方法:

而不是使用unbind(),这意味着您将不得不在以后重新绑定相同的事件处理程序,您可以使用jQuery的data()工具与ajaxStart和ajaxStop事件使您的元素在所有AJAX请求期间忽略单击事件:

$(".elem").click(function() {
    if (!$(this).data("ajaxRequestPending")) {
        // some behavIoUr
    }
}).ajaxStart(function() {
    $(this).data("ajaxRequestPending", true);
}).ajaxStop(function() {
    $(this).removeData("ajaxRequestPending");
});

编辑:这个答案也是id-to-class-proof(参见提问者的编辑),因为匹配选择器的所有内容都将以正确的方式处理AJAX事件.这是jQuery的主要卖点,它表明.

我们今天的关于javascript-如何使用jQuery禁用单击事件一段时间?的分享已经告一段落,感谢您的关注,如果您想了解更多关于Javascript / jQuery / etc中的方法,用于测量经过一段时间后经过的时间/触发事件、javascript – Jquery ajax按钮单击事件两次触发?、javascript – Jquery中的开/关单击事件、javascript – Jquery删除并添加单击事件的相关信息,请在本站查询。

本文标签: