Как создать уникальные идентификаторы для диалогов jquery, сгенерированных php в списке? - PullRequest
1 голос
/ 09 июля 2011

У меня проблема с диалогами jquery. При использовании их просто жестко на кнопку они работают просто отлично. Но когда я запускаю вектор в php для генерации результатов поиска, моя кнопка «Больше информации» перестает работать. Первая опция генерирует диалог при нажатии, но содержимое в нем неверно. Элементы списка после этого не будут отображать всплывающее диалоговое окно, и если я нажимаю кнопку при прокрутке вниз, она переходит к первому элементу.

Я предполагаю, что это поведение генерируется из-за нескольких кнопок с одинаковым идентификатором Это первая домашняя страница, которую я сделал, и я не знаю, как решить эту проблему.

Какой-то код:

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

Спасибо

Ответы [ 4 ]

0 голосов
/ 09 июля 2011

Как уже упоминалось, вам нужно иметь уникальные идентификаторы.Сделайте класс dialog_link и назначьте идентификаторы внутри цикла while равными уникальному значению, такому как номер строки таблицы SQL данной записи.

0 голосов
/ 09 июля 2011

У вас не может быть более одного элемента с одинаковым идентификатором, идентификатор должен быть уникальным.

Добавить некоторый уникальный идентификатор из результатов вашей базы данных в идентификатор ссылки html.

Затем добавьте класс "js_show_info" или тому подобное к своей ссылке и присоедините к этому классу свой обработчик jQuery.

$('.js_show_info').click()...
0 голосов
/ 09 июля 2011

Если в каждом диалоговом окне есть информация, уникальная для каждой строки результатов поиска, то каждому диалогу нужен свой уникальный идентификатор. Кроме того, для каждого содержимого диалогового окна нужны переменные php, уникальные для каждой строки.

После прочтения вашего вопроса и просмотра кода, похоже, это так. Если я прав, то решение вашей проблемы будет немного сложнее, чем изменение идентификаторов на классы.

0 голосов
/ 09 июля 2011

Вы должны никогда иметь повторные идентификаторы, это было причиной проблемы. Вместо этого используйте класс

Итак, у вас будет:

<a class="dialog_link" ... >

И ваш код jquery будет:

$('.dialog_link').click(function(){ //Note the . instead of #
   $('#dialog').dialog('open'); //The same code
   return false; //The same code
});

Надеюсь, это поможет. Приветствия

...