【发布时间】:2021-08-12 22:19:55
【问题描述】:
我正在使用 jQuery .load() 将 HTML 文件加载到我的父网页中。我想针对我加载到其中的 HTML 文件从父页面执行 jQuery/JS。我相信我可以通过回调函数做到这一点。
我将这个 jQuery 用于下拉菜单,当在我的下拉菜单中选择一个选项时,我使用它来将这些 HTML 文件加载到 targetPane <div id="targetPane"></div>。
jQuery($ => {
$('#courses').on('change', e => {
$('#targetPane').load(e.target.value);
path = (e.target.value);
$('#targetPane').load('path', function() {
$('#test').html("20");
});
});
});
我使用$('#targetPane').load('path', function(){ 作为我的回调函数,我可以执行$('#test').html("20"); 并更改加载的HTML 文件中的值作为测试。现在我想在回调函数中执行如下代码:
$(function() {
function getTotal() {
var total = 0;
$("input, select").each(function(i, el) {
if ($(el).is("input:checked")) {
$($(el).data("rel")).show();
total += parseInt($(el).val());
} else {
$($(el).data("rel")).hide();
}
if ($(el).is("select")) {
if ($(el).val() !== "0") {
$($(el).data("rel")).html($(el).val()).show();
total += parseInt($(el).val());
}
}
});
return total;
}
$('input[type="checkbox"], select').change(function() {
$("#sum").text(getTotal());
});
});
...但是您可以从回调函数中调用函数吗?如何针对加载的 HTML 文件执行这么大的代码块 (function getTotal())? path 将返回值 includes/inc_1.html 或类似值。
<select name="myCourses" id="courses">
<option value="">Please Select Course</option>
<option value="includes/inc_1.html">Item 1</option>
<option value="includes/inc_2.html">Item 2</option>
</select>
这是正在加载的 HTML 文件。如果我尝试在 includes/inc.html 文件中添加这么大的 JS 块,我的 total 变量会返回一个 NaN,而不是正确的值。 https://jsfiddle.net/Twisty/hpd415fj/46/ 演示了总数应该如何工作。
任何帮助表示赞赏。
谢谢
【问题讨论】:
-
很难说你在做什么,但基本问题的答案是,你可以在另一个函数的上下文中调用一个函数;事实上,您自己的代码在多个地方都可以做到这一点。
-
这个线程stackoverflow.com/questions/68746908/… 阐明了这个问题。 “dom 对象可能不存在”,因为包含 HTML 的文件 (inc_1.html) 被加载到父页面 (index.html) 中,因此需要 api.jquery.com/load 引用的“回调函数”。我想知道这个“回调函数”是否可以专门使用函数(以及语法是什么),而不是像
$('#test').html("20");这样的东西
标签: javascript jquery function callback