2011-02-12 116 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');