如何为php在列表中生成的jquery对话框创建唯一的id:s ?


How do I create unique id:s for jquery dialogs generated by php in a list?

我有一个jquery对话框的问题。当使用它们只是硬编码到一个按钮,他们工作得很好。但是当我在php中运行矢量以生成一些搜索结果时,我的more info按钮停止工作。第一个选项将在按下时生成一个对话框,但其中的内容是错误的。在此之后的列表项将不会显示弹出对话框,如果我按下按钮,当向下滚动时,它会跳到第一个项目。

我猜这种行为是由于多个具有相同id的按钮而产生的。这是我做的第一个主页,我真的不知道如何解决这个问题。

一些代码:

PHP part:
$outputList = '';
while($row = mysql_fetch_array($sql2)){
  ...yadayada...
  <a style="position:relative;left:600px;top:-40px;" href="#" id="dialog_link" onmouseover="document.rollover.src=button2.src" onmouseout="document.rollover.src=button1.src" >
    <img src="images/search/info_btn_unsel.png" border="0" name="rollover" />
  </a>
</div>
</div>
}
JavaScript part:
<script type="text/javascript">
  $(document).ready(function(){
    // Dialog           
    $('#dialog').dialog({
      autoOpen: false,
      width: 600,
      buttons: {
        "Ok": function() { 
          $(this).dialog("close"); 
        }, 
      }
    });
    // Dialog Link
    $('#dialog_link').click(function(){
      $('#dialog').dialog('open');
      return false;
    });
  });
</script>

完整的文件可以在这里找到:http://dl.dropbox.com/u/10627595/timeseek_result.php

谢谢

如果每个对话框中的信息对每一行搜索结果都是唯一的,那么每个对话框都需要它自己的唯一id。此外,每个对话框内容都需要对每行唯一的php变量。

在阅读你的问题并查看你的代码后,情况似乎是这样的。如果我是正确的,那么解决您的问题将比将id更改为类更复杂。

绝不能有重复的id,这是导致问题的原因。用类代替

所以你有:

<a class="dialog_link" ... >
你的jquery代码应该是:
$('.dialog_link').click(function(){ //Note the . instead of #
   $('#dialog').dialog('open'); //The same code
   return false; //The same code
});

希望这对你有帮助。欢呼声

不能有多个项目具有相同的id, id必须是唯一的。

从你的数据库结果中添加一些唯一的ID到你的html链接的ID

然后添加一个类"js_show_info"或类似的链接和附加你的jQuery处理程序到这个类。

$('.js_show_info').click()...

正如其他人已经提到的,您需要具有惟一的id。创建一个dialog_link类,并在while循环中为id分配一个唯一值,例如给定记录的SQL表行号。