1

我正在将我的代码从 fancybox 更改为 jquery ui,但我在这段代码中有一些错误:

<a class = "perfil_1"><h3>Luciana </h3></a>
<a class = "perfil_2"><h3>John</h3></a>
<a class = "perfil_3"><h3>Pedro </h3></a>

<div id="dialog_1">
<p>Lorem ipsum dolor sit amet</p>
</div>

<div id="dialog_2">
<p>Lorem ipsum dolor sit amet</p>
</div>

<div id="dialog_3">
<p>Lorem ipsum dolor sit amet</p>
</div>


  for (i = 1; i < 4; i++) {
            $('.perfil_'+i).click(function(){
                $('#dialog_'+i).dialog('open');
                return false;
            });
         };

有什么帮助吗,谢谢。

4

2 回答 2

3

编辑注意您缺少.dialog()声明。没有它,您就没有创建对话框,因此它不会打开。将其称为$("dialog_" + i).dialog().dialog("open");See Js fiddle以获取非样式对话框示例。

不要循环遍历每个为什么不向每个锚添加一个类,而是给它一个 index 属性,使用它来循环:

<H3><a class = "perfil" index=1>Luciana </a></h3>
<H3><a class = "perfil" index=2>John</a></h3>
<H3><a class = "perfil" index=3>Pedro</a></h3>

<div id="dialog_1">
<p>Lorem ipsum dolor sit amet</p>
</div>

<div id="dialog_2">
<p>Lorem ipsum dolor sit amet</p>
</div>

<div id="dialog_3">
<p>Lorem ipsum dolor sit amet</p>
</div>


$('.perfil').live("click", function(){
    var i = this.getAttribute("index");
    $('#dialog_'+i).dialog().dialog('open');
    return false;
});

附带说明一下,如果您的代码版本没有在$(document).ready(function(){})块内运行或不在 html 的末尾,则有可能在元素存在之前进行点击分配并且没有被绑定到您当前的锚点。这就是为什么我倾向于使用liveordelegate所以你总是保证有约束力。

于 2012-04-20T15:27:53.253 回答
1

你的脚本代码错误..我想你忘了给'_'符号。把它改成

  for (i = 1; i < 4; i++) {
            $('.perfil_'+i).click(function(){
                $('#dialog_'+i).dialog('open');
                return false;
            });
         };
于 2012-04-20T15:20:24.473 回答