在foreach循环中多次调用Javascript函数

在foreach循环中多次调用Javascript函数,javascript,php,jquery,Javascript,Php,Jquery,我有一个由foreach循环生成的搜索结果列表。我试图为每个结果添加一个按钮,在iframe窗口中打开每个搜索结果,但只有第一个结果有效,其他结果无效。我想能够打开一个或多个在同一页面的iframes结果。并且可以通过单击另一个按钮来关闭它们。有什么想法吗?谢谢 foreach($this->result['web']->results->result as $item) { echo "<ul>"; echo "<li><a hre

我有一个由foreach循环生成的搜索结果列表。我试图为每个结果添加一个按钮,在iframe窗口中打开每个搜索结果,但只有第一个结果有效,其他结果无效。我想能够打开一个或多个在同一页面的iframes结果。并且可以通过单击另一个按钮来关闭它们。有什么想法吗?谢谢

     foreach($this->result['web']->results->result as $item) {
 echo "<ul>";
 echo "<li><a href='".$item->url."'>".$item->title."</a></li>";
 echo "<li>".$item->abstract."</li>";
 echo "<script>$(function(){
 $('#button').click(function(){
 if(!$('#iframe').length) {
 $('#iframeHolder').html('<iframe id=\"iframe\" src=\"".$item->url."\"    width=100% height=\"600\"></iframe>');
}
});   
});</script>";       
echo"<li><a id=\"button\">Open</a></li>";
echo"<div id='iframeHolder'></div>";
echo "</ul>";
}
return true;
}
foreach($this->result['web']->results->result as$item){
回声“
    ”; 回声“
  • ”; 回声“
  • ”$item->abstract.
  • ”; echo“$(函数(){ $(“#按钮”)。单击(函数(){ 如果(!$('#iframe')。长度){ $('iframeHolder').html('url.\“width=100%height=\“600\”>); } }); });"; 回声“
  • 打开”
  • ”; 回声“; 回声“
”; } 返回true; }
您的方法有很多问题,我将尝试列举它们

  • 您正在DOM中使用重复的ID(
    按钮)。ID应唯一
    使用进行重复性。有关更多信息,请查看

  • jQuery选择器正在使用ID将单击功能绑定到按钮。
    每次添加按钮时,都会将所有按钮绑定到函数

  • 您应该有一个接收事件的通用单击功能
    检查从事件中获取已单击元素的方法


  • 这只会帮你一点忙。最后一英里包括将项目URL添加到
    按钮
    li

    我建议使用
    data-x
    属性,您可以使用jQuery的
    #data()
    函数(例如
    target.data('x')
    )获取该属性。为了避免将属性值设置为项目URL,例如,将其设置为数组索引


    最后,将
    script
    标记添加到DOM的末尾,或者添加到用
    $(document.ready()
    调用包装的头文件/单独文件中。最好只在加载完所有内容后运行

    您只需要一份脚本副本,从单击的链接获得
    $item->url
    fm完美答案+1。。但我希望他能明白这一点。不幸的是,PHP是web开发中的一种方式,有时会忽略HTML和Javascript的基础知识(已经存在)。对于初学者来说,这个答案中的许多概念可能都很新,一些Google和reading很快就能启动并运行起来。完全同意(概念、Google和reading)这就是如何成为任何领域的专业人士很高兴在这里见到你:)