2

我在 PHP 中从一个数组生成 div,因此:

echo "<div id='parentdiv'>";
 for($counter = 0; $counter < count($list); $counter++){
         echo "<div>".$list['important_info']."</div>";

   }
  echo "</div>";//parentdiv

我想为每个div独立添加一些点击功能,即点击时执行的动作取决于div,更重要的是数组的索引,$list;

我想根据它在 PHP 数组中的索引给每个 div 一个 id。所以我可以做

echo "<div id='"."divindex_".$counter."'>".$list['important_info']."</div>";

其中“divindex_”仅用于防止 id 形式以数值开头。

然后,我认为在 jQuery 中我可以为每个 div 编写点击函数。

但是问题是 $list 的大小是可变的,所以我不知道有多少个 div。所以我的想法是这样的,

 $("#parentdiv div").click(function(){
            var id = split($(this).attr('id').split("_")[1];//get the php index from the id
            //do something with the id, e.g. ajax or whatever
  });

有一个更好的方法吗?如果您认为我在做的事情很奇怪而且不是一个好主意,那么我理解。但我不知道如何以其他方式做到这一点。任何帮助表示赞赏。

4

3 回答 3

0

只需使用:

$("#parentdiv div").click(function(){
            var id  = $(this).index(); //index of div, 0 based
            var val = $(this).text();  //content of div, if you need it
});

无需添加唯一ID的 s :) 。

演示:http: //jsfiddle.net/q9TaJ/

文档: http ://api.jquery.com/index/

于 2013-03-13T11:27:59.220 回答
0

首先,确保正确转义您的输出:

echo '<div id="parentdiv">';
for ($counter = 0; $counter < count($list); $counter++){
    echo sprintf('<div data-id="%d">%s</div>',
        $counter,
        htmlspecialchars($list['important_info'])
    );
}
echo '</div>';//parentdiv

我还使用了一个名为的特殊属性data-id,您可以使用以下代码在 jQuery 中轻松访问该属性:

$('#parentdiv > div').on('click', function() {
    var id = $(this).data('id');
});
于 2013-03-13T11:36:31.987 回答
0

您可以将变量作为 html 属性传递。然后将点击事件绑定到单个类。

<div class="divs" data-id="myid"></div>

在jQuery中

 $('.divs').click(function(){
console.log($(this).data('id));    
});
于 2013-03-13T12:05:42.023 回答