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 [, data] [, complete(responseText, textStatus, XMLHttpRequest)] )

url:包含请求发送到的 URL 的字符串。

数据:随请求发送到服务器的映射或字符串。

complete(responseText, textStatus, XMLHttpRequest) 请求完成时执行的回调函数。

您可能需要将 .on 函数作为 Custom.php 页面的 .load 回调。

像这样的例子:

$(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

好的。无论如何我找到了答案。对于那些在想为什么它不起作用的人。这是因为愚蠢的报价。

$("document") 应该是 $(document) 因为 document 不是标签 <。

多田就是这样。

叹。

感谢大家的帮助:)

于 2012-05-28T00:43:56.643 回答