首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jQuery动态加载内容(文件)

使用jQuery动态加载内容(文件)
EN

Stack Overflow用户
提问于 2014-12-23 17:19:20
回答 1查看 234关注 0票数 0

在尝试使用jQuery.load()函数动态加载内容时,如果用户多次单击nav中的链接以替换以下内容:

代码语言:javascript
复制
<div id="REPLACEMENT"></div>

所有以前加载的内容保持不变,并添加新内容。在添加新内容之前,我正在加载的文件的内容似乎并没有真正“清除”div的内容。我假设这是因为我的$.on(“单击”)脚本都运行了多次(与用户单击nav链接的次数一样多)。我试过

代码语言:javascript
复制
$.remove
$("REPLACEMENT").html("")
$("#REPLACEMENT").empty();

这个问题仍然存在,但无济于事。我发现,如果我使用替代的点击检测方法,我的结果是不同的:

代码语言:javascript
复制
$(".deleteBtn").click( function() {  // Nothing happens.
$(".deleteBtn").on("click", function() { // Nothing happens.
$(document).on("click",".deleteBtn",function() { // Triggers, but multiple times.

我真的被困在这上面了!任何帮助都将不胜感激!

下面是我的替换代码的副本粘贴,以及我的onclick代码:

代码语言:javascript
复制
// Enables the Archive, Reporting, and Error-Reporting links in the navigation.
$(document).on("click", "li#archive, li#reporting, li#error-reporting", function() {
    $("#REPLACEMENT").empty();
    $("#REPLACEMENT").load("modules/"+$(this).attr("id")+".html");
});

////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
// Delete an archive
//$(".deleteBtn").click( function() { 
//$(".deleteBtn").on("click", function() { 
$(document).on("click",".deleteBtn",function() {
//alert('asdf');
    var Record = $(this).attr('id');
    bootbox.confirm("Are you sure?", function(result) {
        if (result == true) {
            $.ajax({
                type: "PUT",
                url: APIUrl + 'DeleteArchive/' + Record,
                success: function(data, textStatus, jqXHR){
                    $("#TR_"+Record).remove();
                },
                error: function(jqXHR, textStatus, errorThrown, data){
                    console.log("AJAX "+errorThrown+": - " + textStatus);
                    $("#ERROR_RESPONSE").html(data);
                    $("#ERROR_RESPONSE_GROUP").show();
                }
            });
        }
    });
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-23 17:54:54

此代码的原因是:

代码语言:javascript
复制
$(document).on("click",".deleteBtn",function() {

还有这个

代码语言:javascript
复制
$(".deleteBtn").click( function() { 
$(".deleteBtn").on("click", function() { 

仅仅是因为内容是在加载页面之后动态创建的。因此,您必须使用未动态创建的父级$(document)工作。

现在你面临的真正问题是

触发器,但多次

尝试将此添加到单击事件中,并查看它是否修复了它。这不是理想的解决办法,但可能对你有帮助。

代码语言:javascript
复制
$(document).on("click",".deleteBtn",function(event) {
    event.stopPropagation();
    event.preventDefault();
    ....
    ....
    ....
});

更新您确认的上述不工作,请尝试如下:

代码语言:javascript
复制
$(document).off().on("click",".deleteBtn",function(event) {
    event.stopPropagation();
    event.preventDefault();
    ....
    ....
    ....
});

然后尝试如下:.one只触发事件一次。

代码语言:javascript
复制
$(document).one("click",".deleteBtn",function(event) {
    event.stopPropagation();
    event.preventDefault();
    ....
    ....
    ....
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27625086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档