2014-12-05 55 views
1

我正在使用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。

这里是的document.ready代码与validateCC()函数:

$(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未定义”。

+0

尝试在其他代码中放置'console.log'或'alert'。 – 2014-12-05 17:55:14

+0

是的,在函数的开头放置'alert'有什么问题? – Regent 2014-12-05 17:56:17

回答

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%肯定这将工作,但你可以尝试。

+0

试过了。这不起作用。我会在上面添加我的功能。 – dmikester1 2014-12-05 19:04:35

+0

我可以问你,你的'result'变量包含什么?如果你打印出内容,你会得到什么?并且是在你的'$('。rightPane')'内加载的内容? – Dim13i 2014-12-06 11:53:26

+0

内容确实被加载到rightPane中。结果是在“脚本”部分的底部有一堆javascript的javascript。 – dmikester1 2014-12-08 16:12:45