【发布时间】:2018-05-19 07:26:21
【问题描述】:
我已经多次在 Stack Overflow 上看到过这个问题,但我发现的解决方案通常很老,并且谈到了已弃用的 delegate 方法。
我正在寻找 jQuery 3.x 的解决方案。这是我的 AJAX 调用:
$.ajax({
type: "get",
url: "/content",
data: {
name: {{ name }}
},
success: function(data) {
$("#appendsection").append(data);
}
});
在这里,我将成功数据附加到名为 appendsection 的 div 中
这个appendsection div 不执行任何javascript,它执行CSS,但没有javascript 和jquery。我大部分时间都看到这个问题,我从 ajax 调用获得的任何数据都不想执行 javascript。
这是附加内容
<div class="sortingbuttons">
<select id="sort">
Sort By
<option value="name">Relevance</option>
<option value="price">Cheapest</option>
<option value="recommend">Recommended</option>
</select>
</div>
#sort id 在app.js 上执行
$('#sort').change(function(){
$('.section').hide();
$('#' + $(this).val()).show();
});
因此,排序不适用于附加内容,因此 javascript 不适用于附加内容。
【问题讨论】:
-
“不执行 javascript”是什么意思?如果您的意思是没有事件处理程序对其触发,那么您需要使用委托事件处理程序。普通的 AJAX 调用不会对结果产生任何影响。
-
附加的html内容不会在上面运行javascript,所以如果有像
.button.hide();这样的javascript代码,它就不会运行 -
你什么时候尝试调用这些函数?
-
你的意思是当返回的
data中有JS代码时?这在 jQuery 中永远不会像这样工作。 -
在附加内容本身上,它会调用这些函数,我正在寻找一种在附加内容后自动调用它的方法
标签: javascript jquery ajax