$ this.attr () останавливает открытие диалога Jquery - PullRequest
1 голос
/ 05 июня 2010

Я использую следующий код для публикации данных формы в player / index.php и открытия их в диалоговом окне. Поскольку в моей таблице несколько таких форм, мне нужно использовать $ (this).

Но теперь он не открывается в диалоге.

Новый код (не открывает диалоговое окно, но отображает данные в URL):

  $("#recordingdialog").dialog({
  //other options, width, height, etc...
     modal: true,
      bgiframe: true,
      autoOpen: false,
      height: 200,
      width: 350,
      draggable: true,
      resizeable: true,
      title: "Play Recording",});

$(this).click(function() {
  $.post('player/index.php', $(this).attr('form').serialize(), function (data) {
       $("#recordingdialog").html(data).dialog("open");
  });
  return false;
});

Старый код (работает только на одной форме):

      $("#recordingdialog").dialog({
  //other options, width, height, etc...
     modal: true,
      bgiframe: true,
      autoOpen: false,
      height: 550,
      width: 550,
      draggable: true,
      resizeable: true,
      title: "Play Recording",});


$("#wavajax button").click(function() {
  $.post('player/index.php', $("#wavajax").serialize(), function (data) {
       $("#recordingdialog").html(data).dialog("open");
  });
  return false;
});

Ответы [ 2 ]

1 голос
/ 05 июня 2010

Вместо .attr() то, что вы хотите, это .closest(), например:

$(this).click(function() {
  $.post('player/index.php', $(this).closest('form').serialize(), function (data) {
       $("#recordingdialog").html(data).dialog("open");
  });
  return false;
});

Получает ближайший родительский элемент, который <form> ... так что <form>, в котором вы сейчас находитесь :) Также вместо $(this) в качестве вашего селектора для click I think Вы имели в виду любую из этих кнопок, если это так, задайте им класс, например <button class="dialogBtn">, и используйте этот селектор, например, так:

$(".dialogBtn").click(....);
0 голосов
/ 05 июня 2010

Вы должны взглянуть на вывод консоли на наличие ошибок.

 $(this).attr('form')

вернет строку, и вы не можете использовать .serialize() для строки.

Кроме того, в каком контексте вы выполняете код? Раньше у вас был селектор, но теперь вы используете только this.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...