通过</li>中包含的<img/> onClick动态添加<li>

时间:2011-05-06 15:41:54

标签: jquery tags

我正在使用http://webdeveloperplus.com/jquery/ajax-multiple-file-upload-form-using-jquery/中的脚本 我修改了onComplete以添加删除图像的链接。在remove_me()函数中,我想: 1.删​​除&lt; li&gt;单击该文件 2.通过ajax在服务器上调用PHP脚本,以便从服务器上删除该文件,因为它已经上传。

if(response==="success"){
  $('<li></li>').appendTo('#files').html('<img src="./uploads/'+file+'" alt="" /><br />'+file+'<br />Click to Remove<img src="cross.png" onclick="remove_me(\'./uploads/'+file+'\')" />').addClass('success');
} else{
  $('<li></li>').appendTo('#files').text(file).addClass('error');
}

在remove_me()函数中,我可以轻松获取图像名称,因为我通过onClick传递它,但我不知道如何删除&lt; li&gt;包含图像。 文件名将通过ajax调用传递给PHP函数。我知道该怎么做,它只是删除&lt; li&gt;我遇到了麻烦。

3 个答案:

答案 0 :(得分:1)

如果您使用的是jQuery,则不应使用“onClick”之类的内联事件绑定。您可以使用标准的绑定事件方式,即:

$(function() {
    $('img').click(function() {
        // process here
    })
})

因此,您可以访问任何相关的DOM元素。在您的情况下,您可以将父<li>作为$(this).parent()并将其与$(this).parent().remove()删除;

ADDED:如果要以dinamically方式添加这些元素,则必须使用live绑定事件,例如:

$(function() {
    $('img').live('click', function() {
        // process here
    })
})

答案 1 :(得分:1)

我不确定你在这里展示的是什么它不起作用,因为我看不到remove_me()函数,但我会告诉你如何按照我的方式去做。

你可以在remove_me()函数中使用$(this),如下所示:

$(this).closest('li').remove();

这将从点击的位置开始,然后转到最近的li标签并将其删除。

(darnit两个人刚刚回答......我不会去看......得学会更快地输入lol)

答案 2 :(得分:0)

如果图像是LI标记内的唯一元素,则可以使用DOM删除图像的parentNode,从而删除LI。

https://developer.mozilla.org/En/DOM/Node.parentNode http://reference.sitepoint.com/javascript/Node/parentNode