2

如何在 JQuery 中动态启动 UI 对话框的 OnClick 事件?

每个 SVG-rect 元素 (1,2,...,1000) 都应该能够打开此对话框,同时还应提交参数或 ID 以识别单击了哪个 svg。

相关的 JS 代码如下所示:

$(function() {
    $( "#request_1" )
        .click(function() {
            createForm();
            $( "#dialog-form" ).dialog( "open" );       
    });
/*....*/
};

相关的 HTML 代码如下所示:

<svg version="1.1" width="720" height="125">
    <rect id="request_1" x="180.5" y="15" width="39" height="15">
    </rect>
</svg>

<svg version="1.1" width="720" height="125">
    <rect id="request_2" x="180.5" y="15" width="39" height="15">
    </rect>
</svg>

/*[...]*/

<svg version="1.1" width="720" height="125">
    <rect id="request_1000" x="180.5" y="15" width="39" height="15">
    </rect>
</svg>

问题来自此示例,您可以在其中找到完整的源代码:http: //jqueryui.com/dialog/#modal-form

想象一下,您将有 1000 个不同的按钮。

任何想法?我想使用简单的 onClick 将是一个解决方案,但是如何启动 .click(function()) 呢?

感谢你们对我的帮助!

4

2 回答 2

1

绑定或添加一个类并将事件绑定click到该类。rectrectclick

$( "rect" ).click(function() {
  $( "#dialog" ).dialog( "open" );
});

如果是动态添加的元素,请使用.on()

$(document).on('click', 'rect', function() {
  $( "#dialog" ).dialog( "open" );
});

演示:http: //jsfiddle.net/dirtyd77/Fdc6b/1/

于 2013-03-13T17:08:15.447 回答
-3

如果要添加动态元素,请使用 live 函数为新元素附加事件,如下所示:

$(function() {
    $( "#request_1" ).live('click',function() {
            createForm();
            $( "#dialog-form" ).dialog( "open" );       
    });
/*....*/
};
于 2013-03-13T17:05:28.493 回答