首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery AJAX单击删除方法不一致触发

jQuery AJAX单击删除方法不一致触发
EN

Stack Overflow用户
提问于 2017-01-14 20:35:03
回答 2查看 76关注 0票数 1

我有一个AJAX方法,它正在为正在单击的链接触发一个DELETE方法,但是尽管我的jQuery工作过一次,但我还没有达到触发AJAX方法的程度,并且无法确定代码的错误所在。可能是因为语法错误。onload console.log会触发,因此我知道文件是被识别的,但是单击中的console.log没有触发。此外,这是触发DELETE方法的最佳方法吗?

这里是jQuery:

代码语言:javascript
复制
window.onload = function() {
    console.log("Window loaded")
    $('#blog-comment-delete').click(function(){
        var blogId = $(this).data("blog-id");
        var commentId = $(this).data("comment-id");
        var urlPath = '/app/blog/' + blogId + '/comment/' + commentId;
        console.log('Pre-AJAX');
        $.ajax({
            method: 'DELETE',
            url: urlPath,
            success: function(){
                window.location.replace('/app');
            },
            error: function(error){
                console.log('Deletion Error: ' + error);
            }
        });
    });
};

使用应用程序路由Node.js:

代码语言:javascript
复制
appRoutes.route('/blog/:blogId/comment/:blogCommentId')

    .delete(function(req, res){
        models.BlogComment.destroy({
            where: {
                blogId: req.params.blogId,
                blogCommentId: req.params.blogCommentId,
                userId: req.user.userId
            }
        }).then(function(){
            req.flash('info', 'Comment was successfully deleted.');
            res.send('Comment was deleted.');
        });
    });

链接:

代码语言:javascript
复制
<div class="blog-comments">
    {{#blog_comments}}
            <p id="blog-comment">{{comment}}</p>
            <a href="#" id="blog-comment-delete" data-blog-id="{{blogId}}" data-comment-id="{{blogCommentId}}">Delete</a>
    {{/blog_comments}}
</div>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-14 20:55:14

而不是id的,使用类名作为选择器。id是唯一的,如果同一个页面上有多个具有相同id的元素,那么您的事件侦听器就会中断。因此,取而代之的是:

代码语言:javascript
复制
<div class="blog-comments">
    {{#blog_comments}}
            <p id="blog-comment">{{comment}}</p>
            <a href="#" class="blog-comment-delete" data-blog-id="{{blogId}}" data-comment-id="{{blogCommentId}}">Delete</a>
    {{/blog_comments}}
</div>

您的事件侦听器应该如下所示:

代码语言:javascript
复制
$('.blog-comments').on('click', '.blog-comment-delete', function(){
});
票数 2
EN

Stack Overflow用户

发布于 2017-01-14 20:51:13

你可以这样试一试

代码语言:javascript
复制
$('#blog-comment-delete').on('click',function(){
     //Your code
    });

2)如果第一次没有工作,则:

代码语言:javascript
复制
$( "body" ).on( "click", "#blog-comment-delete", function() {
       //Your code
    });     

3)

代码语言:javascript
复制
$('body').delegate('#blog-comment-delete','click',function(){
     //Your code
    });
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41654725

复制
相关文章

相似问题

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