使用 jQuery 动态添加 Prev Next 作为 Bootstrap 模态按钮
Using jQuery to dynamically add Prev Next as Bootstrap Modal buttons
我似乎在使用 jQuery 动态添加按钮时遇到了问题,但这些按钮却不见了。我已确认这些按钮之前已添加到 DOM.
我有一个包含 4 个按钮的 codepen。每个按钮都会打开一个模式,如下图所示
我正在使用 jQuery 为每个模式添加 Prev 和 Next 按钮,除了第一个模式仅添加一个 Next 按钮,最后一个模式仅添加一个 Prev 按钮。我正在使用 jQuery 来执行此任务。这是代码:
$(function() {
var $modals = $('[data-toggle="modal"]');
var mCount = $modals.length;
var el = $('.modal-footer').children();
var prevButton = $("<button type='button' class='btn btn-default' data-dismiss='modal'>Prev</button>");
var nextButton = $('<button type="button" class="btn btn-default" data-dismiss="modal">Next</button>');
for (var i = 0; i < mCount; i++) {
if ( i === 0 ) {
$(el[i]).after(nextButton);
} else if ( i === mCount -1 ) {
$(el[i]).before(prevButton);
} else {
$(el[i]).before(prevButton);
$(el[i]).after(nextButton);
}
}
});
我有 运行 跟踪 Chrome 开发工具在每个循环结束时设置断点,我看到按钮已创建。然而,在下一次迭代中,添加的按钮将从 DOM 中消失。希望有人能指出我做错了什么。
jQuery 完成 1 个循环后,我的 HTML 中的第一个模态页脚。从 chrome 开发工具粘贴,这表明添加了“下一步”按钮:(到目前为止还不错)
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-default" data-dismiss="modal">Next</button>
</div>
第二次循环后。第一个模态页脚不再有 Next 按钮,但第二个模态页脚添加了 Prev 和 Next 按钮。 (第一个模态按钮是如何被移除的?)
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Prev</button>
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-default" data-dismiss="modal">Next</button>
</div>
第三个循环后。第二个模态页脚不再有 Prev 和 Next 按钮。第三个模态页脚添加了 Prev 和 Next 按钮。
第 4 个循环后,第 3 个模态页脚的 Prev 按钮被删除(为什么?),第 4 个模态页脚是正确的。没有遗漏的按钮。
改变
var prevButton = $("<button type='button' class='btn btn-default' data-dismiss='modal'>Prev</button>");
到
var prevButton = "<button type='button' class='btn btn-default' data-dismiss='modal'>Prev</button>";
(即删除 $()
包装器)
当您使用 $("..")
时,您会创建一个新节点,然后 .after
/.before
将该节点移动 到新位置。
当你使用纯文本时,它每次都会为你创建一个新节点,所以不会移动它。
我已经更新了你的codepen。请在此处查看。
https://codepen.io/smitraval27/pen/Ldxrey
// javascript object patterns
$(function() {
var $modals = $('[data-toggle="modal"]');
var mCount = $modals.length;
var el = $('.modal-footer').children();
var prevButton = "<button type='button' class='btn btn-default' data-dismiss='modal'>Prev</button>";
var nextButton = '<button type="button" class="btn btn-default" data-dismiss="modal">Next</button>';
for (var i = 0; i < mCount; i++) {
if ( i === 0 ) {
$(el[i]).after(nextButton);
} else if ( i === mCount -1 ) {
$(el[i]).before(prevButton);
} else {
$(el[i]).before(prevButton);
$(el[i]).after(nextButton);
}
}
});
我似乎在使用 jQuery 动态添加按钮时遇到了问题,但这些按钮却不见了。我已确认这些按钮之前已添加到 DOM.
我有一个包含 4 个按钮的 codepen。每个按钮都会打开一个模式,如下图所示
我正在使用 jQuery 为每个模式添加 Prev 和 Next 按钮,除了第一个模式仅添加一个 Next 按钮,最后一个模式仅添加一个 Prev 按钮。我正在使用 jQuery 来执行此任务。这是代码:
$(function() {
var $modals = $('[data-toggle="modal"]');
var mCount = $modals.length;
var el = $('.modal-footer').children();
var prevButton = $("<button type='button' class='btn btn-default' data-dismiss='modal'>Prev</button>");
var nextButton = $('<button type="button" class="btn btn-default" data-dismiss="modal">Next</button>');
for (var i = 0; i < mCount; i++) {
if ( i === 0 ) {
$(el[i]).after(nextButton);
} else if ( i === mCount -1 ) {
$(el[i]).before(prevButton);
} else {
$(el[i]).before(prevButton);
$(el[i]).after(nextButton);
}
}
});
我有 运行 跟踪 Chrome 开发工具在每个循环结束时设置断点,我看到按钮已创建。然而,在下一次迭代中,添加的按钮将从 DOM 中消失。希望有人能指出我做错了什么。
jQuery 完成 1 个循环后,我的 HTML 中的第一个模态页脚。从 chrome 开发工具粘贴,这表明添加了“下一步”按钮:(到目前为止还不错)
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-default" data-dismiss="modal">Next</button>
</div>
第二次循环后。第一个模态页脚不再有 Next 按钮,但第二个模态页脚添加了 Prev 和 Next 按钮。 (第一个模态按钮是如何被移除的?)
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Prev</button>
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-default" data-dismiss="modal">Next</button>
</div>
第三个循环后。第二个模态页脚不再有 Prev 和 Next 按钮。第三个模态页脚添加了 Prev 和 Next 按钮。
第 4 个循环后,第 3 个模态页脚的 Prev 按钮被删除(为什么?),第 4 个模态页脚是正确的。没有遗漏的按钮。
改变
var prevButton = $("<button type='button' class='btn btn-default' data-dismiss='modal'>Prev</button>");
到
var prevButton = "<button type='button' class='btn btn-default' data-dismiss='modal'>Prev</button>";
(即删除 $()
包装器)
当您使用 $("..")
时,您会创建一个新节点,然后 .after
/.before
将该节点移动 到新位置。
当你使用纯文本时,它每次都会为你创建一个新节点,所以不会移动它。
我已经更新了你的codepen。请在此处查看。
https://codepen.io/smitraval27/pen/Ldxrey
// javascript object patterns
$(function() {
var $modals = $('[data-toggle="modal"]');
var mCount = $modals.length;
var el = $('.modal-footer').children();
var prevButton = "<button type='button' class='btn btn-default' data-dismiss='modal'>Prev</button>";
var nextButton = '<button type="button" class="btn btn-default" data-dismiss="modal">Next</button>';
for (var i = 0; i < mCount; i++) {
if ( i === 0 ) {
$(el[i]).after(nextButton);
} else if ( i === mCount -1 ) {
$(el[i]).before(prevButton);
} else {
$(el[i]).before(prevButton);
$(el[i]).after(nextButton);
}
}
});