2011-12-16 69 views
0

当我尝试在jQuery中实现委托功能时,它完美地工作时,我使用警报(),里面,但它不会触发时,我删除该警报。jQuery的代表或实时功能不能正常工作

$(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(); 
    } 
}); 

u能在第2行看到一个警报,所有的功能运作良好,如果警报存在..当我删除警报,实在不行..

+0

在两个侧面说明:1.你确定你没有什么更好的节点委派到的不是“文件” ?肯定有一个包装div会使事情至少更有效一些? 2.虽然`.delegate()`没有被官方弃用,我建议切换到`.on()`,这将是功能相同的。这只是事件和选择器在语法方面相反。 – 2011-12-16 06:47:49

+0

我使用的是primefaces,它有一个内置的jquery,它不支持on()函数。而不是使用委托,我也使用实时功能..但有同样的问题.. – Karthikeyan 2011-12-16 06:52:14

+0

我不知道primefaces(或一般的JSF),但在我看来,一些问题源于那里。当然,你可以升级primefaces使用的jQuery? – 2011-12-16 15:17:48

回答

2

你把这个代码的文档中.ready事件?

$(function() { .... }); 

这可能是您的警报造成了差异,因为那段时间,文档已经加载。

0

把你的函数到$(文件)。就绪,它会工作

$(document).ready(function(){ 
$(document).delegate("#j_id2030916047_790d592c", "click", function(){ 

    //alert(""); 
     $("#p4").hide(); 
    $("#p5").hide(); 
    $("#p3").hide(); 
. . . 

    }); 
});