2013-09-24 51 views
0

有没有什么办法让jQuery [UI]在原地生成dialog?或者轻松将其移回并使其工作?保持对话框div放在哪里

YUI2's Panel给了你这样做的自由,它假定你知道你在做什么,并把标记放在你放置它的地方。
但现在我已经转向使用更简单的jQuery,我注意到了一个限制; jQuery UI似乎只能在body下直接创建对话框。


考虑this example;
假设您想使用div作为命名空间CSS的一种方式。
通过在.className前加上所有选择器,并写入与class="className"分隔的标记,写入与功能相关的样式表。

Some 

<div class="sectiona"> 
    <div class="popup" title="A popup"> 
     This text should be <span class="emphasis">blue</span> 
    </div> 
</div> 

irrelevant 

<div class="sectionb"> 
    <div class="popup" title="B popup"> 
     This text should be <span class="emphasis">red</span> 
    </div> 
</div> 

content 

<script>$(function() { $('.popup').dialog(); });</script> 
.emphasis { 
    color : yellow; 
} 

.sectiona .emphasis { 
    color : blue; 
} 

.sectionb .emphasis { 
    color : red; 
} 

弹出的div(.popup)将被移动到身体,失去所有的CSS! (在现实生活中显然会更复杂)。 由于所有的对话框/面板都是绝对定位的,我希望它们保存的div具有静态位置,并且是身体的儿童,它wouldn't make any difference at all to keep them there

不要把这个CSS命名空间技术(如果这是正确的,甚至措辞)作为本想唯一的原因,我敢肯定还有其他的用例

+0

所以这个问题的短版本是:**“jQuery用户界面从其初始位置移动对话框元素到'身体',使它成为一个直接的孩子。有没有办法阻止它做到这一点?“**这是正确的吗? –

+0

或者在它犯了这个错误之后将它移回去,这就是第一条线在接下来要扩展的时候要做的事,如果有一面我可以通过到'dialog()',太棒了,否则一个不会破坏事物的解决方法就可以使用了。 – Hashbrown

+0

@ Hashbrown:你会发现人们更感兴趣的是帮助那些没有咆哮的人,不要再称它为“大错特错“等等,并记住jQuery和jQuery UI **为你节省了多少时间**所以他们做了一个你不同意的选择(我也是这样),不需要继续下去 –

回答

1

有一个appendTo选项,你会需要指定它为每个单独的弹出窗口:

// HTML 
// added a common "section" class to your divs 
Some 
<div class="section sectiona"> 
    <div class="popup" title="A popup">This text should be <span class="emphasis">blue</span> 
    </div> 
</div> 
irrelevant 
<div class="section sectionb"> 
    <div class="popup" title="B popup">This text should be <span class="emphasis">red</span> 
    </div> 
</div> 
content 

// javascript 
$('.section').each(function() { 
    $(this).find('.popup').dialog({ 
     appendTo: this 
    }); 
}); 

fiddle

+0

这是一个[较新的功能](http://jsfiddle.net/47Se3/1/) jQuery的?因为API说appendTo选项[是选择器](http://api.jqueryui.com/dialog/#option-appendTo),而不是元素 – Hashbrown

+0

你是对的:http://jqueryui.com/upgrade-指南/1.10 /。我只是检查了文档,看看是否有一个选项,没有检查它何时出现。你能升级到jquery-ui> = 1.10吗? – LeGEC

+0

升级将比黑客入侵事件给'appendTo''''选择器更好。赶上额外的英里。 jQuery应该更新文档,不是? – Hashbrown