javascript – jQuery bind ajax:成功不能在rails 3应用程序新创建(ajax)项目

前端之家收集整理的这篇文章主要介绍了javascript – jQuery bind ajax:成功不能在rails 3应用程序新创建(ajax)项目前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
**编辑这篇文章,因为我发现问题真的是无法将rails绑定到ajax:success函数.

***使用导轨3.2.3

感谢您抽出时间阅读并尝试帮助.

我在ajax上添加一个简单的淡出功能:正在删除的项目的成功如下:

$(document).ready( jQuery(function($) {
    $('.delete').bind('ajax:success',function() {
        $(this).closest('div').fadeOut();
    });
}));
#For some reason had to pass the $into the function to get it to work,#not sure why this is necessary but doesn't work unless that is done.

之后,我想在用户添加某些东西时创建一个不引人注目的jQuery的对象,并且在这些对象上也有工作删除按钮.我创建了一个create.js.erb文件,该文件在创建一个新项目后调用,创建工作正常,但删除按钮无法访问ajax:success事件.

它在单击时会从数据库删除数据,但.fadeOut不会与其绑定,因此它不会消失. create.js.erb如下:

#$("div").append(html) here,then call the function below to try and bind the ajax:success function
$('.delete').bind('ajax:complete',function() {
    $(this).closest('div').fadeOut();
});

如果我更改这个绑定到点击功能,它是有效的,但这并不考虑失败的ajax调用

#$("div").append(html) here,then call the function below to try and bind the ajax:success function
    $('.delete').bind('click',function() {
        $(this).closest('div').fadeOut();
    });

所以有一些东西必须绑定到ajax:项目创建后的成功.你们有什么想法为什么会发生这种情况?我需要在rails上做一些特殊的事情来获取最新渲染的项目来识别ajax事件吗?任何方向都将不胜感激!

附:以下是用于删除方法的控制器,以防任何人能够检测到问题:

def destroy
    @user = User.find(params[:user_id])
    @item = @user.item.find(params[:id])
    @item.destroy

    respond_to do |format|
      format.html { redirect_to user_path(@user) }
      format.json { head :no_content }
      format.js { render :nothing => true }
    end
end

解决方法

问题听起来像在生成元素之前发生绑定.尝试这个:
$(document).on('ajax:success','.delete',function(e) {
    $(e.currentTarget).closest('div').fadeOut();
});

猜你在找的Ajax相关文章