jQuery-我必须调用这个函数两次吗?-结构问题

jQuery-我必须调用这个函数两次吗?-结构问题,jquery,ajax,Jquery,Ajax,所以我正在建立一个图像上传 我需要能够点击列表中的任何div,并让它们消失。容易的?嗯 但我可能在该列表中也有div,它们是在页面加载后动态生成的 我让ajax处理图像并上传图像等等,然后在上传图像后.append()是一个保存新上传图像的div 以下是我的AJAX代码: $("#chosenfile").change(function(){ var data; data = new FormData(); data.append('uploadedfile', $(

所以我正在建立一个图像上传

我需要能够点击列表中的任何div,并让它们消失。容易的?嗯

但我可能在该列表中也有div,它们是在页面加载后动态生成的

我让ajax处理图像并上传图像等等,然后在上传图像后
.append()
是一个保存新上传图像的div

以下是我的AJAX代码:

$("#chosenfile").change(function(){
    var data;

    data = new FormData();
    data.append('uploadedfile', $( '#chosenfile' )[0].files[0]);
    $('#loader').css('display','block');
    $.ajax({
        url: '/includes/uploadimage.php',
        data: data,
        processData: false,
        contentType: false,
        type: 'POST',
        success: function ( data ) {
            //console.log(data); //returns a string of the data.
            var json = JSON.parse(data); //parses the string into an object.
            //console.log(json); //logs the object.

            if (json.link) { //If the image is uploaded and returned a link.
                $('#remove').click();
                $('#scrollwindow').append("<div class='you'><img imgid='" + json.id + "' src='" + json.link + "' alt=''><span class='delete'>x</span></div>");
                addToSlider(1);
                $(".delete").click(deleteRowFunct);
                $('#loader').css('display','none');
            };
        }
    });
});

$(".delete").click(function(){
    deleteRowFunct;
        addToSlider(-1);
});
$(“#chosenfile”).change(函数(){
var数据;
数据=新表单数据();
data.append('uploadedfile',$('#chosenfile')[0].files[0]);
$('#loader').css('display','block');
$.ajax({
url:“/includes/uploadimage.php”,
数据:数据,
processData:false,
contentType:false,
键入:“POST”,
成功:功能(数据){
//console.log(data);//返回一个数据字符串。
var json=json.parse(data);//将字符串解析为对象。
//console.log(json);//记录对象。
if(json.link){//如果上传图像并返回链接。
$(“#删除”)。单击();
$('#滚动窗口')。附加(“x”);
addToSlider(1);
$(“.delete”)。单击(deleteRowFunct);
$('#loader').css('display','none');
};
}
});
});
$(“.delete”)。单击(函数(){
deleteRowFunct;
addToSlider(-1);
});
这允许用户删除一行。当启动此函数时,它将删除数据库中的行(目前它尝试删除该行两次,因为.click()事件和函数是在这两个位置定义的。)这不是什么大问题。。。我的意思是它基于行ID,所以我不在乎它是否尝试删除两次

但现在我不仅需要删除数据库中的行,还需要调整包含图像的div列表的div的大小。。。这就是我的代码停止正常工作的地方

我正在使用
addToSlider(1)
每次我上传一个图像时,它会找到图像的大小并相应地调整包装div的大小

这很好用

现在我想做
addToSlider(-1)删除行时查找图像大小并相应调整换行div

我所尝试的:

如果我添加
addToSlider(-1)
到ajax
if(data.link)
它只会在上传图像后调整大小

如果我添加
addToSlider(-1)
$(“.delete”)。单击我的代码末尾的事件()
,它将只调整页面加载时已经存在的图像的大小,而不会调整动态上载的图像的大小

^^显示在上面的代码中

如果我添加
addToSlider(-1)
到实际的
deleteRowFunct()
大小减去两次

问题:


如何调用'deleteRowFunct()'和
addToSlider(-1)
仅一次并应用
。单击()
事件以动态生成div和页面加载时生成的div?

您可以在jquery上使用

$(document).on('click', '.delete', function(){
 deleteRowFunction(this);
});
这将把事件添加到动态生成的元素中

编辑: 使deleteRowFunction接受一个参数并将其传递给它。 这样,您的函数就可以使用它了

function deleteRowFunction(thing){
 $(thing).doSomething();
}
尝试使用以下方法:

$(".delete").live('click', function(e){
  // do stuffs
});

好的,但现在我得到了
未捕获的TypeError:无法调用未定义的方法“getAttribute”
。我知道这是因为我试图在
deleteRowFunct()
中获取
$(this)
的.getAttribute。