2011-03-16 105 views
0

您好堆棧溢出,我希望你今天好,jQuery的追加字符串

我有這樣的代碼:

$('.add_child').click(function(){ 
    var attrName = $(this).attr('name'); 
    var count = $(this).attr('count'); 
    $(this).attr('count', (parseInt(count)+1)) 
    var input = $('<input />'); 
    input.attr('type','text') 
    input.attr('name',attrName+"["+count+"]") 
    $('.children_form').append('<li>'+[input]+'</li>'); 
}) 

我試圖讓我出來顯示爲:

<li><input /></li> 

但它似乎並沒有正常工作我得到這個代碼在我的HTML

<li>[object Object]</li> 

我相信此行是給我的問題:

$('.children_form').append('<li>'+[input]+'</li>'); 
+0

如果你在最後一行的'input'附近刪除方括號('['和']'),你會得到什麼? – 2011-03-16 17:25:35

+0

@大衛托馬斯與之前一樣

  • [賓語對象]
  • Xavier 2011-03-16 17:28:29

    回答

    2

    隨着[input]要創建陣列。但'<li>'+input+'</li>'也不會工作,因爲input是一個對象,而不是HTML。

    你不得不做像這樣:

    $('.children_form').append($('<li />').append(input)); 
    

    count不是有效的HTML屬性。您應該使用.data()。您可以使用HTML5 data attributes格式的屬性設置初始值:data-count="0"

    +1

    獲獎者,獲獎者,雞晚餐! – Xavier 2011-03-16 17:29:51

    +0

    @Xavier:我喜歡那部電影:) – 2011-03-16 17:33:55

    +0

    是一部很棒的電影,而且凱文在電影中的表現非常好:D – Xavier 2011-03-16 17:38:46

    0
    $('.add_child').click(function(){ 
        var attrName = $(this).attr('name'), 
         count = $(this).attr('count'); 
    
        $(this).attr('count', (parseInt(count)+1)); 
    
        var input = $('<input />', { 
         type: 'text', 
         name: attrName + '[' + count + ']', 
        }); 
        $('.children_form').append($('<li>').html(input)); 
    }); 
    
    +0

    這是行不通的。 'html()'只接受一個HTML字符串。 – 2011-03-16 17:34:26

    +0

    @費利克斯,不,先生。它也接受jQuery對象。你可以自己嘗試。 – 2011-03-16 17:51:48

    +0

    我立場正確。應該調整文件。 – 2011-03-16 18:33:46