jquery委托或活动函数无法正常工作
当我尝试在jquery中实现委托函数时,当我在内部使用alert()时,委托函数可以很好地工作,但当我删除该警报时,委托函数不会被触发jquery委托或活动函数无法正常工作,jquery,Jquery,当我尝试在jquery中实现委托函数时,当我在内部使用alert()时,委托函数可以很好地工作,但当我删除该警报时,委托函数不会被触发 $(document).delegate( "#j_id2030916047_790d592c", "click", function(){ alert(""); $("#p4").hide(); $("#p5").hide(); $("#p3").hide(); $("#check2").change(function(){
$(document).delegate( "#j_id2030916047_790d592c", "click", function(){
alert("");
$("#p4").hide();
$("#p5").hide();
$("#p3").hide();
$("#check2").change(function(){
if($("#check2").is(":checked")) {
$("#p2").hide();
}
else{
$("#p2").show();
}
});
$("input[name='sor']").change(function(){
if($("input[name='sor']:checked").val()=="collegeStudent"){
$("#p3").show();
$("#p4").hide();
$("#p5").hide();
}
else if($("input[name='sor']:checked").val()=="schoolStudent"){
$("#p4").show();
$("#p5").hide();
$("#p3").hide();
}
else if($("input[name='sor']:checked").val()=="employee"){
$("#p5").show();
$("#p3").hide();
$("#p4").hide();
}
else{
$("#p5").hide();
$("#p3").hide();
$("#p4").hide();
}
});
你可以在第2行看到警报,如果警报存在,所有功能都可以正常工作。。当我删除警报时,没有任何效果。是否将此代码放入document.ready事件中
$(function () { .... });
可能是您的警报起了作用,因为此时文档已加载。将您的函数放入$(document)。就绪,它就会工作
$(document).ready(function(){
$(document).delegate( "#j_id2030916047_790d592c", "click", function(){
//alert("");
$("#p4").hide();
$("#p5").hide();
$("#p3").hide();
. . .
});
});
我也怀疑这是个时间问题。Karthikeyan,在document ready事件中总结这一切,你应该很好。是的,我在document ready中也使用了相同的代码。。使其在页面加载期间工作。但是在primefaces中,
u可以看到一个名为ajax=false的属性,如果它被赋予了手段,那么document.ready本身就可以完美地工作,因为它不需要委托或活动函数。但是,当我保持ajax=true以在不加载页面的情况下验证字段时,我需要live函数来保持这些功能即使在单击命令按钮(#j_id2030916047_790d592c)后仍能正常工作。请尝试升级jquery的版本,然后尝试使用.on()。注意:1。您确定没有比“文档”更好的节点可以委托给它吗?肯定有一个包装器div可以使事情至少有一点效率?2.虽然.delegate()
并没有被正式弃用,但我建议切换到功能相同的.on()
。只是事件和选择器在语法上是相反的。我使用的是primefaces,它有一个内置的jquery,它不支持on()函数。我没有使用委托,而是使用了live函数。。但是有同样的问题……我不知道primefaces(或者一般的JSF),但在我看来,有些问题源自于此。当然你可以升级primefaces使用的jQuery?是的,我可以,但事实上问题不在于primefaces,我认为。。这是由于ajax。。。看看这个类似的问题。。虽然已经提供了清晰的解决方案,但我仍然无法遵循它,因为primefaces内置了ajax功能,没有办法改变它。。