禁用和启用 jQuery 中的事件
disable and enable events in jquery
我需要在我的代码中禁用和启用div - 我发现了用于禁用事件的 off() 和 on() 函数,它们工作正常,但问题是我无法使用我之前定义的处理程序。 例如:
这是在加载时禁用Listner的代码
function disableEvent ()
{
$("body").ready(function(e)
{
$("#part *").attr("disabled","true").off("click");
$("#sgmnt *").attr("disabled","true").off("click");
$("#subSgmnt *").attr("disabled","true").off("click");
});
}
这是启用列表器的代码
function enableElmnt ( id )
{
p="#"+id+" *";
alert(id);
$("body").ready(function(e) {
$(p).attr("disabled","false").on("click",false);
});
}
这是处理程序代码
$(document).ready(function() {
$(".partElements").not("#part19").not("#part20").not("#part21").click( function(){
$(".partElements").not("#part19").not("#part20").not("#part21").css("background-color","#FFF");
$(".partElements").not("#part19").not("#part20").not("#part21").css("color","#000");
$(this).css("background-color","#000");
$(this).css("color","#FFF");
selectDiv=$(this).attr("id");
loadLists("2",selectDiv);
});
});
和 HTML 代码
<div id="part">
<div class="partElements" id="part1"></div>
<div class="partElements" id="part2"></div>
<div class="partElements" id="part3"></div>
<div class="partElements" id="part4"></div>
<div class="partElements" id="part5"></div>
<div class="partElements" id="part6"></div>
<div class="partElements" id="part7"></div>
<div class="partElements" id="part8"></div>
<div class="partElements" id="part9"></div>
<div class="partElements" id="part10"></div>
<div class="partElements" id="part11"></div>
<div class="partElements" id="part12"></div>
<div class="partElements" id="part13"></div>
<div class="partElements" id="part14"></div>
<div class="partElements" id="part15"></div>
<div class="partElements" id="part16"></div>
<div class="partElements" id="part17"></div>
<div class="partElements" id="part18"></div>
<div class="partElements" id="part19">edit</div>
<div class="partElements" id="part20">ddelete</div>
<div class="partElements" id="part21">modify</div>
</div>
我在你的代码中看到的问题是调用不同函数的顺序。 首先,我认为你不需要在你的enableElmt函数中有一个$(document).ready,然后重新考虑其他代码段。
当 $(文档) 准备就绪时,您希望禁用所有div。然后,在某个时候,当 ajax 调用返回时,您希望启用div 并执行其他操作。
所以第二个错误应该是 $(document).ready(代码的第三部分),管理对div 的点击(当这些div 仍然被禁用时)。
所以,为了做这样的事情:
$(document).ready(disableElmt());
把 $(document).ready() 放在函数里面。
然后,将 $(document).ready() 放在 EnableElmt 中,并使其由 ajax 响应调用。
在启用Elmt结束时,您可以调用管理div单击的代码(否则仍处于禁用状态)
希望这有帮助
我的方法总是绑定处理程序。我会更改处理程序代码,以便它可以决定是否需要执行操作,例如:
$("SELECTOR").on("click", function() {
if (!$(this).prop("disabled")) {
// Do something
}
});
始终调用处理程序,但只有当单击的元素未被禁用时,才会有一个操作。
希望这有帮助!
相关文章:
- 选择onclick事件jquery
- 用于多个类事件Jquery的单个函数
- 激发滑块's幻灯片事件jquery ui
- 设置重复按钮以注册点击事件jquery
- 保留当前点击事件jquery
- 启动/停止按键事件jquery
- 在事件jquery中插入一个函数
- 删除克隆的事件JQuery
- typeahead选择事件(jQuery)的动态绑定
- 触发自定义事件 Jquery
- 绑定两次或更多次的事件 jquery
- 单击时的事件 jquery 不起作用
- 在鼠标悬停事件 jquery 上显示边框的内容
- 同时触发两个鼠标事件 jQuery
- 焦点事件 jquery 组合框/自动完成
- 如何在页面中捕获“正文”和“正文”事件[Jquery].
- 将对象传递给事件 jQuery
- 验证“取消”上的字段 单击Onbeforeunload事件JQUERY
- 复选框单击事件 jQuery 不起作用
- 口述事件jquery顺序