2014-09-22 40 views
1

我一直在使用JQuery第一次遇到问题。我有很多相同锚点的副本打开一个对话框,问题是当我点击其中任何一个对话框时,对话框将以与锚点一样多的副本打开。大量相同按钮打开对话框的副本

的代码看起来像这样

脚本:

$(document).ready(function(){ 

    $('div#dialogbox').dialog({ 
     autoOpen: false 
    }); 

    $('#opener').click(function(){ 
     $('div#dialogbox').dialog('open); 
    }); 

}); 

对话框:

<div id="dialogbox"> 
    <p>Sample text</p> 
</div> 

主持人:

<a href="#" id="opener">Click Me</a> 
+1

如果我准备好你的问题,那么你有多个'Click Me'这将是无效的HTML。 Id的应该是唯一的 – andrew 2014-09-22 13:24:32

+0

只是一个观察,但有没有从.dialog('open);应该是.dialog('open');没有? – fidev 2014-09-22 13:51:09

回答

0

你可以尝试

var popup; 
$(document).ready(function(){ 
popup = $('div#dialogbox').dialog({ 
autoOpen: false}); 
$('.opener').click(function(){ popup.dialog('open); }); 
}); 

是否能解决你的问题,那么你将要遵循的变种,但只是一些简单的一些最佳实践,看看是否能解决问题

也将跟随其他建议在其他的答案,从ID类的变化,注意确保如果这是你的问题,但你不应该有多个ID的使用相同的值

<a href="#" class="opener">Click Me</a> 

也让确保你只有一个弹出页面上的副本

+0

没有区别,仍然打开很多对话框。 – jogproof 2014-09-22 13:41:51

+0

@jogproof只要确保页面右侧只有一个DIV对话框?每个链接都没有一个? – workabyte 2014-09-22 13:43:39

+1

任何人在愚蠢比赛中交奖品?我有我的对话框div在“for”循环...谢谢; ) – jogproof 2014-09-22 13:53:04

2

尝试的东西代替它像这样

<a href="#" class="opener">Click Me</a> 

和你的JS到

$(document).ready(function(){ 

    var popup = $('div#dialogbox').dialog({autoOpen: false}); 

    $('.opener').click(function(){ 
     popup.dialog('open); 
    }); 
}); 

你只是为了有相同名称的页面上的1号,如果需要多,那么你应该使用类。

+0

我已经完成了您所建议的更改,并且其行为依然如此。 – jogproof 2014-09-22 13:34:07

+0

作为一个建议,如果你想要多种不同的Modals,你总是可以像这样格式化 - > http://jsfiddle.net/aekc4j5b/1/ – Owen 2014-09-22 13:58:14

相关问题