Jquery Twitter引导确认对动态生成的元素无效
我正在使用DataTable,在页面加载时生成动态内容。 在表中,我使用了引导确认。 在脚本下面加载它Jquery Twitter引导确认对动态生成的元素无效,jquery,ajax,twitter-bootstrap,document-ready,confirmation,Jquery,Ajax,Twitter Bootstrap,Document Ready,Confirmation,我正在使用DataTable,在页面加载时生成动态内容。 在表中,我使用了引导确认。 在脚本下面加载它 $( document ).ajaxStop(function() { $(document).find('[data-toggle="confirmation"]').confirmation(); }); 它会打开确认框,但当单击“是”或“否”时,它不工作 这不起作用 我有以下代码来检测“已确认”事件 $(document).ready(function(){ $(doc
$( document ).ajaxStop(function() {
$(document).find('[data-toggle="confirmation"]').confirmation();
});
它会打开确认框,但当单击“是”或“否”时,它不工作
这不起作用
我有以下代码来检测“已确认”事件
$(document).ready(function(){
$(document).find('.delete-record').on('confirmed.bs.confirmation', function() {
var thisEl = $(this);
deleteForm($(this).attr('data-delid'));
});
});
这是有效的
文档有什么问题。准备好了吗?
编辑:
我有与文档相同的代码。准备好了
在其他页面上工作,但没有DataTable,它是HTML DIV结构。尝试稍微更改事件绑定,以便对每个现有和将来都进行绑定。使用
语法上的备用$删除记录元素
$(document).ready(function(){
$('body').on('confirmed.bs.confirmation', '.delete-record', function() {
deleteForm($(this).attr('data-delid'));
});
});
由于不知道您的页面结构,我选择绑定到body
,但您可以将其绑定到表的任何父元素。我认为这是因为文档准备就绪后,dom操作会动态生成元素
用.delegate
代替.ready
怎么样
$(document).delegate('.delete-record', 'confirmed.bs.confirmation', function() {
deleteForm($(this).attr('data-delid'));
});
同样的问题…
花点时间来理解插件
很简单:
my_new_dynamic_element.on('confirmed.bs.confirmation', function(){alert('ok')}).confirmation();
一个更简单的解决方案:
您有一个类似于
$('[data-toggle="confirmation"][data-target="service"]').confirmation({});
将其放在$(document).ready(function(){})之前的函数中;
并在加载动态内容后调用它
function confirm(){
$('[data-toggle="confirmation"][data-target="service"]').confirmation({
your options come here
});
}
$(document).ready(function(){
confirm();
});
.delete记录元素是动态添加的还是始终在页面上?它第一次来自PHP脚本,并且在页面上加载DataTable会自动加载数据,所以它会在页面上响应。我的意思是永远在页面上。之前和之后。天哪!我怎么忘了使用事件委派?每次我用这个,我都没注意到。非常感谢你。它成功了,我已经将它绑定到文档
尽管采用了上面建议的事件绑定,我似乎也遇到了同样的问题。jQuery 1.11.2和Bootstrap Confirmation 2.1.3我的jsfiddle我的问题实际上是根本没有显示的popover。在生成新DOM后重新初始化插件,使其正常工作。我的问题略有不同,但deleteForm($(this.attr('data-delid'))代码>这行打开我的灯泡!!!:D:D非常感谢。两者都一样,只是版本问题。在1.4.3中有委托,但在1.7以上的版本中,.delegate()
已被.on()
方法取代。这与上面的正确答案相同。不过,谢谢你的指点。
function confirm(){
$('[data-toggle="confirmation"][data-target="service"]').confirmation({
your options come here
});
}
$(document).ready(function(){
confirm();
});