对于想了解javascript-如何使用jQuery禁用单击事件一段时间?的读者,本文将是一篇不可错过的文章,并且为您提供关于Javascript/jQuery/etc中的方法,用于测量经过一段时间后
对于想了解javascript-如何使用jQuery禁用单击事件一段时间?的读者,本文将是一篇不可错过的文章,并且为您提供关于Javascript / jQuery / etc中的方法,用于测量经过一段时间后经过的时间/触发事件、javascript – Jquery ajax按钮单击事件两次触发?、javascript – Jquery中的开/关单击事件、javascript – Jquery删除并添加单击事件的有价值信息。
本文目录一览:- javascript-如何使用jQuery禁用单击事件一段时间?
- Javascript / jQuery / etc中的方法,用于测量经过一段时间后经过的时间/触发事件
- javascript – Jquery ajax按钮单击事件两次触发?
- 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中的方法,用于测量经过一段时间后经过的时间/触发事件
我怎样才能完成这样的事情?
解决方法
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按钮单击事件两次触发?
问题是,当我单击编辑按钮时,事件将触发两次.
我正在使用一个单独的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(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中的开/关单击事件
我正在尝试打开和关闭点击事件以防止多个函数调用.以下是我的代码.点击是关闭但我似乎无法再打开它.思考?
$("#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删除并添加单击事件
是否可以删除而不是将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删除并添加单击事件的相关信息,请在本站查询。
本文标签: