我正在使用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未定义”。
答案 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%这会有效,但你可以试试。