从DOM中删除克隆后,Radiobutton未经检查

时间:2016-12-13 15:01:57

标签: jquery ajax asp.net-mvc twitter-bootstrap

我正在一个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);
    });
    }

1 个答案:

答案 0 :(得分:0)

它必须对$(this).clone()复制与原始名称相同的单选按钮这一事实做一些事情。因此,现在你有2 - 一个检查,另一个未选中。我最好的猜测是$clone.remove();以某种方式删除已检查的...但没有调试我不能这么肯定。