私が自分自身を明確にしていない場合は、タイトルや説明を自由に編集してください.
今日の大きな疑問: alert('foobar');
DOM で正確に何をするのか?!
これは私の問題です。データベースに取得する BIG TREE があります (3 レベル)。したがって、私の<form>
場合、AJAXを使用して徐々にロードします(写真で確認できます)これ
が私のコードです(簡略化されています)-コードの大部分を貼り付けて申し訳ありませんが、すべてが必要です-:
<script type="text/javascript">
$(document).ready(function(){
// generate the CAT box
$("input[name='or-idgd']").change(function(){
var idgd = this.value;
$.post(GLOBAL_HOST+"ajax.php", {'myarg':idgd},
function(data){
var form = '';
var obj = jQuery.parseJSON(data);
form += '<div>';
for (var i = 0 ; i < obj.length ; i++) {
form += '<label for="'+obj[i].id_cat+'_cat">';
form += '<input id="'+obj[i].id_cat+'_cat" type="radio" name="or-idcat"';
form += 'value="'+obj[i].id_cat+'" >';
form += obj[i].cat_name+'</label>';
}
form += '</div>';
$("div#box_cat").append(form);
}
);
});
// generate the COMP box
$("input[name='or-idcat']").change(function(){
var idcat = this.value;
$.post(GLOBAL_HOST+"ajax.php", {'myarg2':idcat},
function(data){
$("div#box_comp").empty();
var form = '';
var obj = jQuery.parseJSON(data);
form += '<div>';
for (var i = 0 ; i < obj.length ; i++) {
form += '<label for="'+obj[i].id_comp+'_comp">';
form += '<input id="'+obj[i].id_comp+'_comp" type="radio" name="or-idcomp"';
form += ' value="'+obj[i].id_comp+'">';
form += obj[i].competence_nom+'</label>';
}
form += '</div>';
$("div#box_comp").append(form);
}
);
}));
<?php /*** THIS IS THE INTERESTED PART - rebulding the tree cf screenshot ***/
// When the form is submitted :
if (!empty($_POST['or-idgd'])) { ?>
$('#<?php echo $_POST['or-idgd']; ?>_gd').trigger('click');
<?php if (!empty($_POST['or-idcat'])) { ?>
//alert('before');
$('#<?php echo $_POST['or-idcat']; ?>_cat').trigger('click');
//alert('after');
<?php if (!empty($_POST['or-idcomp'])) { ?>
$('#<?php echo $_POST['or-idcomp']; ?>_comp').prop('checked', true);
<?php }
}
} ?>
}); // document.ready
</script>
上記のコードは正常に動作します。しかし、フォームを送信すると、JQuery でツリーを再構築し、クリック.trigger()
をシミュレートします。そして、ここにいます:このように、これは機能していません。(PHP に組み込まれている gd_box のおかげで) cat_box のみが作成されます。つまり、最初の.trigger('click')
作品のみが機能します。はい、わかっています。PHP で再構築できると思いますが、再構築しない方がよいと思います..
しかし、気を引き締めてください。2つのコメントを外すとalert()
、他の人.trigger()
も機能し、必要なものを手に入れることができます(スクリーンショットを参照)。
2 つの質問:
alert()
Jquery が DOM を再考できるようにするにはどうすればよいでしょうか。わかりました、ありがとう。- どうすれば修正できますか?
.live()
(私は、、などを試しました.on()
...)