我正在一个bootstrap模式中执行Ajax调用,并用成功的部分视图替换内容(.modal-contents)。我随后使用下面的centerModals函数将模态居中。我在局部视图中有一个radiobutton,默认情况下会被检查。当我最初在Ajax“done”方法中加载局部视图时,会检查它。在调用centerModals函数,特别是$ clone.remove()函数之后,取消选中radiobutton,或者如果我取消对centerModals函数的调用,则仍然会检查radiobutton。任何人都可以解释这种行为吗?
//Ajax call from modal
$.ajax({
url: viewCustomer.loadNewDiscountUrl,
type: 'POST',
datatype: 'json',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({ customerID: customerID }),
cache: false,
timeout: 20000
}).done(function (result) {
//Load partial view. The radiobutton in result is checked
$('#TransctionModalContent').html(result);
global.centerModals();
});
//Script to center modal in global object
centerModals: function ($element) {
var $modals;
if ($element != null && $element.length) {
$modals = $element;
} else {
$modals = $('.modal');
}
$modals.each(function (i) {
var $clone = $(this).clone().css('display', 'block').appendTo('body');
var top = Math.round(($clone.height() - $clone.find('.modal-content').height()) / 2);
top = top > 0 ? top : 0;
$clone.remove();
$(this).find('.modal-content').css("margin-top", top);
});
}
答案 0 :(得分:0)
它必须对$(this).clone()
复制与原始名称相同的单选按钮这一事实做一些事情。因此,现在你有2 - 一个检查,另一个未选中。我最好的猜测是$clone.remove();
以某种方式删除已检查的...但没有调试我不能这么肯定。