2014-12-27 2 views
0

테이블 셀은 INPUT 요소, SELECT 요소 또는 다른 요소를 포함 할 수 있습니다. 코드를 적절하게 라우트하려면 요소에서 값과 클래스 속성을 가져와야합니다.jQuery는 테이블 셀 내에서 알 수없는 요소의 값을 얻습니다.

테이블 셀 내에는 하나의 요소 만있을 수 있지만 요소 유형은 변경 될 수 있습니다.

문제점 : test1 및 test2가 원하는 값 (표 셀의 요소에 대한 클래스 이름 및 값)을 반환하지 않습니다.

jsFiddle Demo

HTML :

<table id="tbl"> 
    <tr> 
     <td class="pid">12345</td> 
     <td class="tbl_vendor"><input class="vi" value="Ikea" /></td> 
     <td>Stove</td> 
     <td><input class="qty_in" value="1" /></td> 
     <td class="del">del</td> 
    </tr> 
    <tr> 
     <td class="pid">38674</td> 
     <td class="tbl_vendor"> 
      <select class="vendSEL"> 
       <option value="1">C.P.O.</option> 
       <option value="2">Knightin</option> 
       <option value="3">CanDine</option> 
      </select> 
     </td> 
     <td id="selTD"></td> 
     <td><input class="qty_in" value="1" /></td> 
     <td class="del">del</td> 
    </tr> 
</table> 

jQuery를/자바 스크립트 :

var $this, qty, thisRowNdx, thisTR, vendorTD; 
$(document).on('keyup', '.qty_in', function() { 
    $this = $(this); 
    qty = this.value; 
    thisTR = $this.closest('tr')[0]; 

    vendorTD = $this.closest('tr').find('.tbl_vendor'); 
    var currVendorTagname = vendorTD.children()[0].tagName; 
    var test1 = vendorTD.children()[0].getAttribute['class']; 
    var test2 = vendorTD.children()[0].nodeValue; 
    alert('currVendorTagname: ' + currVendorTagname); 
    alert('test1: ' + test1); 
    alert('test2: ' + test2); 
}); 
+0

jQuery/DOM은 무엇을 의미합니까? 작동하지 않는 것은 무엇입니까? 수량을 업데이트하면 무엇을 찾고 싶습니까? 귀하의 솔루션이 효과가있을 수 있지만 지나치게 복잡해 보입니다. –

+0

메모 주셔서 감사합니다. 기본 js 요소 대 jQuery 객체에서 얻을 수있는 데이터에 대해 혼란 스러웠습니다. 당신이 말할 수 있듯이, 나는 js보다 jQ에 훨씬 더 편하고 어떤 지식 격차를 메우려하고있다. 내가 지금 알아 낸 것 같아. – crashwap

+0

관계없이 질문을 명확히해야합니다. 당신의 코드는 무엇을 의미합니까? 무엇에 대한 응답으로? 실패한 부분, 실패한 부분, 실패한 부분은 무엇인가? 중요한 것은 미래에이 질문을 다른 사람들에게 유용하게 만드는 것입니다. 그것이 당신에게만 도움이되고 다른 사람들이 이해할 수없는 것이라면, 당신이 무엇을 요구하고 있는지 분명하지 않을 것입니다. 수정하고 수정하여 개선하십시오. 그런 식으로 당신은 다른 사람들을 도울 수있는 기회가 있습니다. –

답변

1

그것은 the right reference을 찾는 모든 문제이다. 또는이 내용을 더 쉽게 읽을 수 있습니다 : the Mozilla Developer Network page. JavaScript getting an elements class without any libraries

솔루션 :


var test1 = vendorTD.children()[0].className; 
var test2 = vendorTD.children()[0].value; 

Updated jsFiddle이이 일을하지만하지 않았다 했어야 :

var test1 = vendorTD.children()[0].getAttribute['className']; 
이 질문에 주어진 대답에

감사합니다

+0

'vendorTD.children() [0] .getAttribute [ 'className']'*는 작동하지 않을 것이며, 작동하지 않아야합니다 : className은 DOM 노드의 속성이지 엘리먼트의 속성이 아니므로 try : 'vendorTD.children() [0] .className' –

+0

당신이 옳습니다. 설명에 감사드립니다. – crashwap

관련 문제