0

2 つの Div コンテナ ( Left と Right ) を含むページがあります。PartsList ページには、動的に生成された 5 つの DIVS があります。カスタム ページには、動的に生成された 5 つの DIVS があります。IDが「layout」のdivは、jQuery .on()で認識されません。助けてください。ありがとうございました:)。

<script type="text/javascript" src="js/jquery.js">
</script>

<script type="text/javascript">

$(function() {

    $(".left").load("PartsList.php",function() {alert("success");});

    $(".right").load("Custom.php", function() {alert("success");});

        $("#layout").children().on({click: function() {
            alert($(this).attr('id'));

          }
 });    

});
</script>

<body>
<div class="main">

<div class="left">
//Load Left page.

</div>
<div class="right">

//Load Structure page.
</div>

</div>
</body>


</html>

パーツリスト

<?php


for ($x = 1; $x < 6; $x++)
{

   $divs = <<<here
   <div id = 'div$x' class = 'list'><strong>Div: $x</strong></div>
   here;
   echo $divs;
 }

?>

カスタム

<?php

echo '<div id="layout">';

for ($y = 0; $y < 5; $y++)
{
        echo "<div id='x$y' style='
        position: absolute;
        width: 200px;
        height: 100px;
        top: ".(100 * $y)."px;
        border: 2px solid blue;
        cursor: pointer;
        '></div>";
}

echo '</div>';

?>
4

4 に答える 4

1

jquery 1.7+likeを使用

$(document).on('click','dynamicElement',function(e){

 //handler code here
});

以前のバージョンではdelegate

$(document).delegate('dynamicElement','click',function(e){

 //handler code here
});

document動的に生成された要素の親要素に置き換えることができます

于 2012-05-27T20:35:45.733 に答える
1

Jquery オンライン マニュアルから:

.load( url [, データ] [, complete(responseText, textStatus, XMLHttpRequest)] )

url: リクエストの送信先 URL を含む文字列。

data: リクエストと共にサーバーに送信されるマップまたは文字列。

complete(responseText, textStatus, XMLHttpRequest)リクエストの完了時に実行されるコールバック関数。

おそらく、その Custom.php ページの .load のコールバックとして .on 関数を配置する必要があります。

この例のようなもの:

$(function() {

    $(".left").load("PartsList.php",function() {alert("success");});

    $(".right").load("Custom.php", function() {alert("success");

        $("#layout").children().on({click: function() {
            alert($(this).attr('id'));

          }
 });
 });    

});
于 2012-05-28T00:11:40.293 に答える
0

.on()関数の構文が間違っていると思います。次のようになります。

$('document').on('click', '#layout > div', function() {
    alert($(this).attr('id'));
});

ドキュメントにバインドし、ユーザーがレイアウトで子divをクリックすると、イベント「バブル」によってDOMがドキュメントに到達します。

于 2012-05-27T20:35:26.263 に答える
0

わかった。とにかく答えを見つけました。なぜうまくいかなかったのか考えていた人のために。それは愚かな引用のせいでした。

ドキュメントはタグ<ではないため、$( "ドキュメント")は$(ドキュメント)である必要があります。

そして、多田はそれです。

はぁ。

みんな助けてくれてありがとう:)

于 2012-05-28T00:43:56.643 に答える