2011-02-12 42 views
0

好吧,這裏是我的代碼:JQuery的問題列表

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
     <title>test</title> 
     <style type="text/css"> 
      .invirep{ 
       display:none; 
      } 
     </style> 
     <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script> 
     <script type="text/javascript"> 
      $(function(){ 
       var replylinkcode = $('<a href="#" id="reply"> [Reply]</a>'); 
       $('#comments ul li').append(replylinkcode); 
       $('#reply').click(function(){ 
        var textareacode = $("<br/><textarea cols='10' rows='2' id='replybox'></textarea>"); 
        $(this).parent().append(textareacode); 
       }); 
      }); 
     </script> 
    </head> 
    <body> 
     <div id="comments"> 
      <ul> 
       <li>Comment 1</li> 
       <li>Comment 2</li> 
       <li>Comment 3</li> 
       <li>Comment 4</li> 
      </ul> 
     </div> 
    </body> 
</html> 

我的問題是:爲什麼是它的文本框出現,而不是爲其它項目當我點擊第一項的回覆鏈接(第二個是唯一,第三和第四項)?

+0

單擊上面的編輯來查看真實代碼,它不能正確呈現。 – Hirvesh 2011-02-12 07:34:03

+0

選擇所有的html,然後點擊{}按鈕。 – 2011-02-12 07:37:12

回答

0

它看起來像你追加一個jQuery選擇器到一個元素。

var replylinkcode = $('<a href="#" id="reply"> [Reply]</a>'); 

應該是:

var replylinkcode = '<a href="#" id="reply"> Reply</a>'; 
+0

jQuery函數可用於創建新元素,所以這不是問題的根源 - 請參閱:http://api.jquery.com/jquery/#jQuery2 – 2011-02-12 07:41:24

0

首先,您使用的是很老版本的jQuery的 - 目前的版本是提前3個大版本。請升級,真的沒有很多理由不這樣做。

其次,您正在創建多個元素與id相同 - 這是無效的HTML,可能是代碼無法工作的原因。

使用jQuery的1.4引入了新的語法,你可以重寫代碼,例如:

$('<a>', { 
    text: '[reply]', 
    href: '#', 
    click: function(){ 
     $("<br/><textarea cols='10' rows='2' id='replybox'></textarea>").appendTo(this.parentNode); 
    } 
}).appendTo('#comments li');