我希望在元素上启用/禁用单击事件。我有以下代码......
HTML:
<a id="CP" style="cursor: pointer; text-decoration: underline;">Current Processes</a>
jQuery的:
$(document).on("click", "#CP", function(event) {
$this = $(this);
$this.click(function() {
return false;
});
$this.html("Processing...").css({
"text-decoration": "none",
"cursor": "default"
});
$.ajax({
type: 'post',
url: 'abc.jsp',
success: function(process) {
//My code goes here...
$this.on("click"); // Here i want to bind or add handler which is fired previously.
}
});
});
答案 0 :(得分:7)
如果我理解得很好,你可以用以下方法做到这一点:
$this.html("Processing...").css({
"cursor": "wait",
"pointer-events": "none"
});
答案 1 :(得分:3)
执行AJAX请求时添加一些类。完成后删除。如果链接有此类,则不执行任何操作。
$(document).on("click", "#CP", function(event) {
event.preventDefault();
$a = $(this);
if($a.hasClass('disabled')) {
return false;
}
$a.html("Processing...").addClass('disabled');
$.ajax({
type: 'post',
url: 'abc.jsp',
success: function(process) {
$a.removeClass('disabled');
// restore inner HTML here
}
});
});
答案 2 :(得分:0)
$this.on("click")
- 这实际上是:“将点击处理程序绑定到$ this,它什么都不做”
要触发事件,请使用:$this.click()
或$this.trigger("customEvent")
答案 3 :(得分:0)
可能你应该使用bind("click")
所以你也可以解开它。例如$("#CP").bind("click",function(){..function to run // disable the click event from CP $("#CP").unbind("click"); });
。祝你好运!
答案 4 :(得分:0)
var eventhandler = function() {
$(document).unbind("click");
$this.html("Processing...").css({
"text-decoration": "none",
"cursor": "default"
});
$.ajax({
type: 'post',
url: 'abc.jsp',
success: function(process) {
//My code goes here...
//Here i want to bind or add handler which is fired previously.
$(document).click(eventhandler);
}
});
}
jQuery(document).click(eventhandler);
答案 5 :(得分:0)
使用 javaScript 提交表单时,您可能遇到了常见问题,如果多次单击“提交”按钮,则表单数据将被多次提交。要解决此问题,您只需要在 CSS 帮助下编写一行代码。
document.getElementById("form1").style.pointerEvents="none";