我生成动态根据用户动作(长篇)Twitter的引导模态。 比方说,有些时候用户就可以看到他的屏幕上100个模态。 在每个模式我有5个动态的按钮,每个按钮都有它自己的目的,并没有在所有的情态动词一样,并有不同的ID的。
我通过使用jQuery附加的onclick事件到这些按钮时,曾经有一个新的Twitter模式通过使用按钮ID如下打开
$(document).on("click","#btn"+btnNumber, function(){
//Code Goes Gere
});
所以,如果我打开100个模态,各有5个按钮,这是好主意,为500次分配的单击事件?
或者是好主意,用它来分配click事件的name属性为1次如下
$(document).ready(function(){
$(document).on("click","btnNameAttr", function(){
//Code Goes Gere
});
});
jQuery的上()可以帮助你在这。 首先,你需要分离数据添加到您喜欢的元素ID btn+btnNumber
。 您可以添加任何自定义信息data-x
属性像data-custom-info
,并使用jQuery的attr('data-custom-info')
语法来检索信息。 注册的事件处理程序on()
方法也可用于未来的元素(脚本执行后创建的元素)。 如下图所示。
当创建新的按钮,添加呈现为..
<input .... class="btnWithData" data-custom-info="1" ... />
<input .... class="btnWithData" data-custom-info="2" ... />
和你的事件处理程序是这样..
$(document).ready(function(){
$('body').on('click','.btnWithData',function(){
//DO WHATEVER
var buttonData=$(this).attr('data-custom-info');
//DO WHATEVER
});
});
你应该使用指定委派事件侦听器 jQuery.on()
方法@ Ananthan,乌尼建议,但形式:
$.on('click', 'button', listener)
在这种情况下,你不需要分配唯一的ID或属性。 您可以使用标签的名称或类名作为选择器(第二个参数)。
看看这里: https://api.jquery.com/on/和阅读委派事件 。
最好是不要使用闭他们需要的内存。 依靠良好的旧数据标签,而不是:
$(document).ready(function () {
$("#wrapper").on("click", "btnNameAttr", function () {
var n;
n = $(this).data("number");
// code goes here
});
});
为了区分内部实际点击的元素#wrapper
使用data-number
属性是这样的:
<div id="wrapper">
<img data-number="000" />
<img data-number="001" />
<img data-number="002" />
<img data-number="003" />
</div>
此代码将执行好得多,你仍然可以有通过包装你想要的所有功能<div>
元素和data-number=""
属性。 而你不干扰class
或id
属性,你可能已经对这些元素。
你甚至可以添加命令到标签:
<img data-number="000" data-command="edit" />
<img data-number="000" data-command="show" />
<img data-number="000" data-command="delete" />
并在其上进行切换:
switch ($(this).data("command"))
{
case "edit":
// edit element with number n here
break;
}