jquery html用$(document).ready代码替换页面

时间:2014-12-05 17:50:44

标签: jquery

我正在使用jquery来替换我网站中的html。插入的HTML在页面底部有一个“$(document).ready”函数。当html被替换时,该代码没有运行。我想这是有道理的,因为整个页面实际上并没有加载。它只是取代了HTML。确保此代码运行的最佳方法是什么? 以下是正在进行替换的代码:

function procView(url, e) {
    var data = $('.checkout form').serialize();
    $.ajax({
        url: '/Shop/' + url,
        data: data,
        success: function (result) {
            $('.rightPane').html(result);
            $('#dvSummary').load('/Shop/_summary');
            validateCC();
        },
        error: function (result) {
            alert(result.responseText);
        }
    });
}

这是.html(结果)行。如果重要,我使用的是asp.net MVC5。

这是带有validateCC()函数的document.ready代码:

$(document).ready(function () {
            alert("out of the function!");
            //$.validator.setDefaults({ ignore: ":hidden, .data-val-ignore" });
            function validateCC() {
                alert("in the function!");
                $('#CardNum').validateCreditCard(function (result) {
                    $("#CardNum").attr('class', 'data-val-ignore');
                    if (result.card_type != null) {
                        $("#CardNum").addClass(result.card_type.name);
                    }
                    if (result.card_type != null && $("#CardNum").val().length == result.card_type.valid_length) {
                        $("#CardNum").addClass("valid");
                    }
                },
                { accept: ['visa', 'mastercard', 'amex', 'discover'] });
            }
        });

这些警报都不适合我。实际上我得到:“ReferenceError:validateCC未定义”。

1 个答案:

答案 0 :(得分:0)

使用Ajax函数,您知道何时正确执行某些内容,因此,一旦使用.html()函数加载内容,您只需调用要执行的函数即可。

我们假设你在第二份文件中有这个:

<div class="test">Hello</div>
<script>
    function doSomething() {
        $(document).find(".test").text("Hello World");
    }
</script>

在你的成功函数中你可以做这样的事情:

success: function (result) {
    $('.rightPane').html(result);
    $('#dvSummary').load('/Shop/_summary');
    doSomething();
}

说实话,我不确定100%这会有效,但你可以试试。