2015-02-08 174 views
0

每个对话框仅打开一次,之后没有任何反应。我搜索了一段时间,这里有几个答案,但我真的不明白他们。 (我对jQuery和jQuery UI相当陌生)所以你可以给我的任何帮助都会很棒!jQuery UI对话框仅打开一次

http://jsfiddle.net/bf44crt0/

$('.prdDetails').click(function() { 
     $(this).next('#prdDetails').dialog({ 
      draggable: false, 
      height: 100, 
      modal: true, 
      resizable: false, 
      width: 100 
     }); 
     return false; 
    }); 

感谢您的时间!

+0

两个t hings。首先,ID **必须是唯一的。其次,jQuery UI会改变DOM元素的顺序,所以不要依赖'.next()'。 – j08691 2015-02-08 02:26:25

回答

1

的问题是在该行:

$(this).next('#prdDetails').dialog({ 

对话框改变其它打开后的位置,因此它不再next()的开门红。

您应该确定与唯一id的对话框。

HTML:

<a class="prdDetails" data-dialog="#d1">Dialog 1</a> 
<div id="d1" class="hidden">This Is Dialog 1</div> 

<a class="prdDetails" data-dialog="#d2">Dialog 2</a> 
<div id="d2" class="hidden">This Is Dialog 2</div> 

<a class="prdDetails" data-dialog="#d3">Dialog 3</a> 
<div id="d3" class="hidden">This Is Dialog 3</div> 

脚本:

$('.prdDetails').click(function(e) { 
    e.preventDefault(); 
    $($(this).data('dialog')).dialog({ 
     draggable: false, 
     height: 100, 
     modal: true, 
     resizable: false, 
     width: 100 
    }); 
}); 

JSFiddle(打开控制台得到什么与对话发生的事情的想法,为什么不能使用next()

+0

这不是我选择使用的方法,但感谢您的帮助!我不明白对话位置移动。我只是认为它被毁坏了!那之后我就不那么困惑了! – Nick 2015-02-08 12:09:16