2015-07-13 95 views
0

当我使用下面的代码时,对话框只运行一次。为什么?对话框只能运行一次

HTML:

<table> 
    <tr id="header"> 
     <td>Name</td> 
     <td>Surname</td> 
     <td>Message</td> 
    </tr> 
    <tr> 
     <td>Name 1</td> 
     <td>Surname 1</td> 
     <td id="tikla1">Click Here! 
      <div id="dialog-message" title="12.07.2015" style="display: none">Msg 1: lorem ipsum</div> 
     </td> 
    </tr> 
    <tr> 
     <td>Name 2</td> 
     <td>Surname 2</td> 
     <td id="tikla2">Click Here! 
      <div id="dialog-message" title="12.07.2015" style="display: none">Msg 2: dolor sit amet 
       <br> 
      </div> 
     </td> 
    </tr> 
    <tr> 
     <td>...</td> 
     <td>...</td> 
     <td>...</td> 
    </tr> 
</table> 

的jQuery:

$("#tikla1,#tikla2").click(function() { 
    $(this).children("#dialog-message").dialog({ 
     modal: true, 
     buttons: { 
      Ok: function() { 
       $(this).dialog("close"); 
      } 
     } 
    }); 
}); 

CSS:

table, td { 
    border:1px solid; 
} 
#header { 
    font-weight: bold; 
} 
#tikla:hover { 
    cursor:pointer; 
    color:red; 
} 

Fiddle Demo

+0

你应该包括在这里StackOverflow上你的问题的jQuery代码。否则,甚至不清楚什么代码只执行一次而没有检查小提琴链接。 – InvisiblePanda

+0

ID **必须是唯一的。 – j08691

+0

改进语法 添加标记 – moffeltje

回答

0

你有很多的问题,在你的代码:

  1. 的ID必须是唯一的。将#dialog-message更改为.dialog-message

  2. 需要初始化的对话框,然后再调用它,用autoOpen: false初始化:

    $("#tikla1, #tikla2").children(".dialog-message").dialog({ 
        modal: true, 
        autoOpen: false, 
        buttons: { 
         Ok: function() { 
          $(this).dialog("close"); 
         } 
        } 
    }); 
    
  3. 你需要有一个单独的调用函数。

    $("#tikla1, #tikla2").click(function() { 
        $(this).children(".dialog-message").dialog("open"); 
    }); 
    
+1

非常感谢我需要这个ID必须独特,使用我的新代码在这里http://jsfiddle.net/qP8DY/3114/ –