2014-11-26 3 views
2

지금까지 모든 일반 텍스트 데이터를 배열로 가져올 수는 있지만 테이블 셀 내의 선택 상자로 인해 어려움을 겪고 있습니다. 지금까지 내 jQuery를에 나는 그것이로 전환하면이html 테이블에있는 모든 데이터를 배열로 가져 오기

$('.image-button').click(function(){ 
     var myTableArray = []; 

     $("table#imgList tr").each(function() { 
      var arrayOfThisRow = []; 
      var tableData = $(this).find('td'); 
      if (tableData.length > 0) { 
       tableData.each(function() { 
        if($(this).has('select').length){ 
         arrayOfThisRow.push($(this + ' select option:selected').text()); 
        } else { 
         arrayOfThisRow.push($(this).text()); 
        } 
       }); 
       myTableArray.push(arrayOfThisRow); 
      } 
     }); 

     console.log(myTableArray); 
    }); 

실패 가지고있는 오류와 선택 문을 경우 전에 나는 보지 못했다 : 난 정말 모르겠어요

Uncaught Error: Syntax error, unrecognized expression: [object HTMLTableCellElement]

무엇 위의 코드가 잘못되어 누구든지 도와 주시면 감사하겠습니다.

+0

그리고 당신이 작업이나하고 관련 HTML은 무엇인가? –

답변

3

첫째, 개체에 문자열을 추가하여 선택기를 만들 수 없습니다.

$('.image-button').click(function(){ 
    var myTableArray = $("table#imgList tr").map(function() { 
     var arrayOfThisRow = $(this).find('td').map(function() { 
      return $(this).has('select').length ? $(this).find('select option:selected').text() : $(this).text(); 
     }).get(); 
     return arrayOfThisRow; 
    }).get(); 
    console.log(myTableArray); 
}); 
+0

완벽하게 작동합니다! 이러한 빠른 응답을 주셔서 감사합니다 :) – jburley89

+0

아무 문제 없어, 도와 줘서 기쁩니다. –

1

이 행 :

arrayOfThisRow.push($(this + ' select option:selected').text()); 
당신은 배열을 만들 수 map()를 사용하여 코드를 단축 할 수 있고, 둘째

arrayOfThisRow.push($(this).find('select option:selected').text()); 

: 당신은 현재 tdselect를 얻을 수 find()를 사용할 필요가

은 다음과 같이 변경해야합니다.

arrayOfThisRow.push($('select option:selected', this).text()); 

나 :

arrayOfThisRow.push($(this).find('select option:selected').text()); 
+0

고마워요. :) – jburley89

+0

엄지 손가락으로 조심하세요. rory의 답변을 얻으려면 녹색으로 체크하십시오. 행운을 빕니다. – Jai

관련 문제