jQuery替换<li> </li>的内容

时间:2012-12-05 18:12:23

标签: jquery replacewith

我有一个连接到jQuery函数的链接。它位于<li>内,带有另一个链接。代码在这里:

<li id="aps_pdf1">
   <a target="_blank"" href="....">1testpdf.pdf</a>
      <span style="padding-left:40px">
           <a id="delete-aps_pdf1" class="delete_pdf" title="Delete this PDF." href="#">Delete</a>
      </span>
</li>

当点击delete-aps_pdf1时,我试图用文件上传控件替换第一个链接,用jQuery替换html。到目前为止,这是我的代码:

jQuery(document).ready(function($) {
    $('.delete_pdf').each(function(i,e) { //grab the link class delete-pdf
        var id = $(this).attr('id').replace(/delete-/, '');
        var li = $(this).closest('li').attr('id');
        $(this).click(function(){
            //alert('Clicked! '+ id);//$(this).attr('id'));  //THIS WORKS WHEN CLICKED
            //alert(li);
            $(li).replaceWith('<input type="file" style="width: 700px;" name="' + id + '" id="' + id + '" />');

        });
    });

我的替换似乎根本不起作用。我对jquery比较新,我已经完成了这个阅读文档,所以我确定我在某个地方遗漏了一些东西。

非常感谢向正确方向迈出的一步!

4 个答案:

答案 0 :(得分:3)

您正在尝试替换字符串。改为传递jQuery对象:

jQuery(document).ready(function($) {
$('.delete_pdf').each(function(i,e) { //grab the link class delete-pdf
    var id = $(this).attr('id').replace(/delete-/, '');
    var li = $(this).closest('li');
    $(this).click(function(){
        //alert('Clicked! '+ id);//$(this).attr('id'));  //THIS WORKS WHEN CLICKED
        //alert(li);
        $(li).replaceWith('<input type="file" style="width: 700px;" name="' + id + '" id="' + id + '" />');

    });
});

答案 1 :(得分:0)

您正在获取li id(.attr(“id”)),这意味着您需要在其他查询的前面连接#

$('#'+li).replaceWith('<input type="file" style="width: 700px;" name="' + id + '" id="' + id + '" />');

答案 2 :(得分:0)

你能不能抓住父李:

var li = $(this).parent('li');

答案 3 :(得分:0)

您在以下行中有错误

var li = $(this).closest('li').attr('id');

应该是

var li = $(this).closest('li');

var li = $(this).closest('li#' + id);