Javascript 在jquery中禁用和启用事件
我需要在我的代码中禁用和启用一个div-我找到了disable event的off()和on()函数,它们工作正常,但问题是我不能使用我以前定义的处理程序。例如: 这是在加载时禁用listner的代码Javascript 在jquery中禁用和启用事件,javascript,jquery,Javascript,Jquery,我需要在我的代码中禁用和启用一个div-我找到了disable event的off()和on()函数,它们工作正常,但问题是我不能使用我以前定义的处理程序。例如: 这是在加载时禁用listner的代码 function disableEvent () { $("body").ready(function(e) { $("#part *").attr("disabled","true").off("click"); $("#sgmnt *").at
function disableEvent ()
{
$("body").ready(function(e)
{
$("#part *").attr("disabled","true").off("click");
$("#sgmnt *").attr("disabled","true").off("click");
$("#subSgmnt *").attr("disabled","true").off("click");
});
}
这是启用listner的代码
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>
编辑
删除
修改
我的方法总是绑定处理程序。我会更改处理程序代码,以便它可以决定是否需要执行操作,例如:
$("SELECTOR").on("click", function() {
if (!$(this).prop("disabled")) {
// Do something
}
});
始终调用处理程序,但如果单击的元素未被禁用,则只有一个操作
希望这有帮助 我在代码中看到的问题是调用不同函数的顺序。 首先,我认为您不需要在enablelmt函数中使用$(document).ready,然后重新考虑其他代码 当$(document)准备就绪时,您希望禁用所有div。然后,在某个时刻,当ajax调用返回时,您希望启用div并执行其他操作 因此,第二个错误应该是$(document).ready(代码的第三部分),它管理对div的单击(当这些div仍然被禁用时) 所以,为了达到这个目的,我会这样做:
$(document).ready(disableElmt());
将$(document).ready()放在函数中
然后,将$(document).ready()放在EnableElmt中,并由ajax响应调用它
在enablelmt的末尾,您可以调用管理div上的点击的代码(否则仍然被禁用)
希望这有帮助你的html看起来怎么样?选择*非常昂贵,您是否尝试过将类添加到容器并将其用作条件?感谢您的关注,我将html代码添加到问题中,问题是谁在调用启用和禁用事件?另外,JSFIDLE对于理解问题也很有用:)thnak you,事件在load by body中被禁用,当ajax响应UI时,事件应该可用,函数loadlist()调用enableLmnt(),感谢您的关注,它不起作用,看起来问题出在处理程序中,而不是在disable and enable中-我不知道:(谢谢,这不是工作-我隐藏了元素,需要时我会临时显示它们