2013-04-16 35 views
0

我試圖用jQuery將一系列HTML無序列表更改爲表。使用jquery的第n個子選擇器的語法錯誤

這是HTML的樣子:

<div class="FindByCategory"> 
    <ul> 
     <li>list item</li> 
     <li>list item</li> 
    </ul> 
    <ul> 
     <li>list item</li> 
    </ul> 
    <ul> 
     <li>list item</li> 
     <li>list item</li> 
    </ul> 
</div> 

我想變成的東西,看起來像:

<div class="FindByCategory"> 
    <table> 
     <tr> 
      <td>list item</td> 
      <td>list item</td> 
     </tr> 
     <tr> 
      <td>list item</td> 
      <td>list item</td> 
     </tr> 
     <tr> 
      <td>list item</td> 
      <td>list item</td> 
     </tr> 
</div> 

我使用的方法是創建並填充先列表,然後隱藏無序列表。我遇到的問題是使用nth:child選擇器。我在控制檯上收到錯誤消息「Syntax error,unrecognized expression:ul:nth-​​child」。該頁面使用jQuery 1.6.4

這裏是我的代碼:

$('.FindByCategory').prepend('<table />'); 
var numberOfRows = $('.FindByCategory ul').length; 
for(var i=0; i <= numberOfRows ; i++){ 
    $('.FindByCategory table').append('<tr>'); 
    var numberOfColumns = $('.FindByCategory ul:nth-child(i) li').length; 
    for(var j = 0; j<= numberOfRows ; j++){ 
     var liHTMLContents = $('.FindByCategory ul:nth-child(i+1) li:nth-child(j+1)').text(); 
     $('.FindByCategory table tr:nth-child(i+1)').append('<td>' + liHTMLContents + '</td>'); 
     } 
    } 

回答

2

你可能想使用的i的值,而不是字符串"i"

var numberOfColumns = $('.FindByCategory ul:nth-child('+i+') li').length; 
0

你需要這樣的東西此

$('.FindByCategory ul:nth-child('+i+') li').length; 

其他行也一樣。

for(var j = 0; j<= numberOfRows ; j++){ 
    var liHTMLContents = $('.FindByCategory ul:nth-child('+(i+1)+') li:nth-child('+(j+1)+')').text(); 
    $('.FindByCategory table tr:nth-child('+(i+1)+')').append('<td>' + liHTMLContents + '</td>'); 
} 
0

以下

$('.FindByCategory ul:nth-child(i) li').length; 

應該

$('.FindByCategory ul:nth-child(' + i + ') li').length;