2011-12-16 11 views
0

jqueryでデリゲート関数を実装しようとすると、内部でalert()を使用すると完全に動作しますが、そのアラートを削除するとトリガされません。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()'に切り替えることをお勧めします。これは構文の点で逆のイベントとセレクタです。 –

+0

私はprimefacesを使用しています、それはinbuilt jqueryを持っています、それはon()関数をサポートしません。デリゲートを使用するのではなく、ライブ関数も使用していますが、同じ問題があります。 – Karthikeyan

+0

私はprimefaces(または一般的なJSF)についてはわかりませんが、そこからいくつかの問題が発生しているようです。確かに、primefacesが使用するjQueryをアップグレードできますか? –

答えて

2

あなたは文書内のこのコードを入れています.readyイベント?

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

その時間までにドキュメントが読み込まれているため、アラートによって差が生じる場合があります。

+0

私はあまりにもタイミングの問題だと思っています。 Karthikeyan、これを文書準備イベントで包んでください。あなたはすばらしいはずです。 –

+0

ya私はこの同じコードをドキュメントの準備中でも使用しています。ページ読み込み中に動作させるためです。しかし、ここでprimefacesで、\t ': p:commandButton> 'ajax = falseという属性を見ることができます。もしそれが与えられていれば、document.ready自体は完全に動作しています。代理人やライブの機能が必要です。しかし、私はajax = trueを維持して、ページロードが足りないフィールドを検証するために、コマンドボタン(#j_id2030916047_790d592c)がクリックされた後でも機能を維持するライブ機能が必要です。 – Karthikeyan

+0

jqueryのバージョンをアップグレードしてから、.on()を試してみてください。 –

0

$(ドキュメント).readyにあなたの機能を入れて、それが両サイドノートでは

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

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

    }); 
}); 
+0

何も変更されていません:( – Karthikeyan

関連する問題