动态添加下拉按钮:如何触发委托事件
dropdbown button dinamically added: how to trigger delegated event
我正在使用 bootstrap 3.3.7。
在我的页面上有一个 table:在 table 的一列中有一个下拉按钮。我动态地向 table 添加行,并且每一行都有一个下拉按钮。那些添加的按钮不会打开(它们依赖于一些 js 来打开并且在 DOM 就绪时不存在)。
如何将事件委托添加到这些下拉列表中?我里面没问题link。即使添加它们也会起作用。但是我无法访问它们,因为我无法打开下拉菜单。
Table代码:
<tr>
<td class="col-md-1">
<i class="fa fa-unlock" aria-hidden="true" data-toggle="tooltip" data-placement="auto" title="Questo form è pubblico"></i>
</td>
<td class="col-md-9">ospiti del B&B</td>
<td class="col-md-2">
<div class="btn-group">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Gestisci form <span class="caret"></span></button>
<ul class="dropdown-menu">
<li><a href="#" data-value="TorTjWzAe4iZPV0B" class="compila"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> Compila</a></li>
<li><a href="#" data-value="7" class="autore"><span class="glyphicon glyphicon-envelope" aria-hidden="true"></span> Contatta autore</a></li>
<li><a href="#" data-value="7" data-role="formdacompilare" class="bug"><span class="glyphicon glyphicon-warning-sign" aria-hidden="true"></span> Segnala un problema</a></li>
<li role="separator" class="divider"></li>
<li><a href="#" data-value="7" class="link-get"><span class="glyphicon glyphicon-link" aria-hidden="true"></span> Link Form</a></li>
</ul>
</div>
</td>
</tr>
将添加行的 JS:
$('#add_form_pubblico').click(function(){
bootbox.prompt({
title: "Inserisci l'url del form pubblico che vuoi aggiungere",
centerVertical: true,
callback: function(result){
if(result){
var public_token = result.replace("form.php?token=", "");
$.ajax({
url: "put_public_token.php",
method: 'post',
dataType: 'json',
data: {public_token: public_token}
}).done(function(data){
bootbox.alert({
message: data.messaggio,
backdrop: true
});
$("#da_compilare tbody").append(data.html);
});
}
}
});
});
$('#add_form_pubblico').on('click', '.dropdown-menu a', function(e) {
var el = $(e.currentTarget); // Link that was clicked.
// ....
});
如果我假设“#add_form_pubblico”是页面加载时出现的父元素的 ID(它不在您的 HTML 中)。用你拥有的任何元素替换它,甚至 $('document')
我正在使用 bootstrap 3.3.7。 在我的页面上有一个 table:在 table 的一列中有一个下拉按钮。我动态地向 table 添加行,并且每一行都有一个下拉按钮。那些添加的按钮不会打开(它们依赖于一些 js 来打开并且在 DOM 就绪时不存在)。 如何将事件委托添加到这些下拉列表中?我里面没问题link。即使添加它们也会起作用。但是我无法访问它们,因为我无法打开下拉菜单。
Table代码:
<tr>
<td class="col-md-1">
<i class="fa fa-unlock" aria-hidden="true" data-toggle="tooltip" data-placement="auto" title="Questo form è pubblico"></i>
</td>
<td class="col-md-9">ospiti del B&B</td>
<td class="col-md-2">
<div class="btn-group">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Gestisci form <span class="caret"></span></button>
<ul class="dropdown-menu">
<li><a href="#" data-value="TorTjWzAe4iZPV0B" class="compila"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> Compila</a></li>
<li><a href="#" data-value="7" class="autore"><span class="glyphicon glyphicon-envelope" aria-hidden="true"></span> Contatta autore</a></li>
<li><a href="#" data-value="7" data-role="formdacompilare" class="bug"><span class="glyphicon glyphicon-warning-sign" aria-hidden="true"></span> Segnala un problema</a></li>
<li role="separator" class="divider"></li>
<li><a href="#" data-value="7" class="link-get"><span class="glyphicon glyphicon-link" aria-hidden="true"></span> Link Form</a></li>
</ul>
</div>
</td>
</tr>
将添加行的 JS:
$('#add_form_pubblico').click(function(){
bootbox.prompt({
title: "Inserisci l'url del form pubblico che vuoi aggiungere",
centerVertical: true,
callback: function(result){
if(result){
var public_token = result.replace("form.php?token=", "");
$.ajax({
url: "put_public_token.php",
method: 'post',
dataType: 'json',
data: {public_token: public_token}
}).done(function(data){
bootbox.alert({
message: data.messaggio,
backdrop: true
});
$("#da_compilare tbody").append(data.html);
});
}
}
});
});
$('#add_form_pubblico').on('click', '.dropdown-menu a', function(e) {
var el = $(e.currentTarget); // Link that was clicked.
// ....
});
如果我假设“#add_form_pubblico”是页面加载时出现的父元素的 ID(它不在您的 HTML 中)。用你拥有的任何元素替换它,甚至 $('document')