开发者

$this.attr() stops Jquery dialog from opening

开发者 https://www.devze.com 2023-01-02 22:19 出处:网络
I am using the following code to post my form data to player/index.php and open it in a dialog. Because I have multiple of these forms in my table I need to use $(this).

I am using the following code to post my form data to player/index.php and open it in a dialog. Because I have multiple of these forms in my table I need to use $(this).

But now it doesn't open in a dialog.

New code (doesn't open dialog but display data in 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;
});

Old code (only works on one form):

      $("#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/ind开发者_StackOverflow社区ex.php', $("#wavajax").serialize(), function (data) {
       $("#recordingdialog").html(data).dialog("open");
  });
  return false;
});


Instead of .attr() what you want is .closest(), like this:

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

This gets the closest parent element that's a <form>...so the <form> you're currently in :) Also instead of $(this) as your selector for the click I think you meant any of these buttons, if that's the case give them a class like <button class="dialogBtn"> and use that selector, like this:

$(".dialogBtn").click(....);


You should have a look at the console output for errors.

 $(this).attr('form')

will return a string and you cannot use .serialize() on a string.

Also in what context do you execute the code? Before you had an selector but now you are only using this.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号