0

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_pdf1htmlを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').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 + '" />');

        });
    });

私のreplaceWithはまったく機能していないようです。私はjqueryに比較的慣れていないので、このドキュメントを読んだことがあるので、どこかで何かが足りないと確信しています。

正しい方向への一歩をいただければ幸いです。

4

4 に答える 4

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 + '" />');

    });
});
于 2012-12-05T18:14:41.883 に答える
0

li id(.attr( "id"))を取得しています。これは、他のクエリの前に#を連結する必要があることを意味します

$('#'+li).replaceWith('<input type="file" style="width: 700px;" name="' + id + '" id="' + id + '" />');
于 2012-12-05T18:15:15.143 に答える
0

親のliを次のように取得できますか?

var li = $(this).parent('li');
于 2012-12-05T18:17:43.270 に答える
0

次の行に間違いがあります

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

そのはず

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

また

var li = $(this).closest('li#' + id);
于 2012-12-05T18:23:00.067 に答える