2010-04-26 4 views
6

안녕하세요, 내가 실제로 필요한 것은 HTML 요소 인 체크 박스 옆에있는 요소의 텍스트를 얻는 것입니다. 선택된 체크 박스의 목록을 얻고 싶습니다. <li> 코드가 아래에 있습니다. 모든Jquery 선택된 체크 박스를 얻으십시오

<ul id="7b1fe2bd-1b26-4185-8cd9-aec10e652a70"> 
<li>Structured Products<input type="checkbox" name="checkboxlist"</li> 
<li>Global FID 
<ul> 
    <li>PowerPoint Presentations<input type="checkbox" name="checkboxlist"</li> 
    <li>Global Deck 
    <ul> 
    <li>Test1<input type="checkbox" name="checkboxlist"</li> 

    <li>Test2<input type="checkbox" name="checkboxlist"</li> 
    <li>Test3<input type="checkbox" name="checkboxlist"</li> 

    </ul> 
    <input type="checkbox" name="checkboxlist"</li> 
    <li>Credit Default Swaps Position 
    <ul> 
    <li>Test4<input type="checkbox" name="checkboxlist"</li> 

    <li>Test5<input type="checkbox" name="checkboxlist"</li> 

    </ul> 
    <input type="checkbox" name="checkboxlist"</li> 
    <li>Thought Leadership<input type="checkbox" name="checkboxlist"</li> 
    <li>Fixed Income Perspectives<input type="checkbox" name="checkboxlist"</li> 
    <li>Public Policy Information and Regulatory<input type="checkbox" name="checkboxlist"</li> 

    <li>Regional FID<input type="checkbox" name="checkboxlist"</li> 

</ul> 
<input type="checkbox" name="checkboxlist"</li> 
<li>Global Rates<input type="checkbox" name="checkboxlist"</li> 
<li>Global Credit Products<input type="checkbox" name="checkboxlist"</li> 
<li>FX<input type="checkbox" name="checkboxlist"</li> 

<li>Emerging Markets<input type="checkbox" name="checkboxlist"</li> 
<li>Commodities<input type="checkbox" name="checkboxlist"</li> 
<li>testcat<input type="checkbox" name="checkboxlist"</li> 
<li>testcat<input type="checkbox" name="checkboxlist"</li> 

</ul> 

답변

17

귀하의 입력이 필요 원하는 텍스트를 될 것입니다 LIS의 텍스트를 얻을 수있는 HTML에서 생각해야한다 끝 부분에 />으로 종료하여 다음과 같이 HTML을 유효하게 설정하십시오.

그런 다음 당신은 텍스트의 배열 얻기 위해 다음과 같이 jQuery를 수행 할 수 있습니다 당신이 필요로하는 모든 부모의 .text() 귀하의 레이아웃을하기 때문에

$(function() { 
    $('#target').click(function() { 
    var checkValues = $('input[name=checkboxlist]:checked').map(function() { 
     return $(this).parent().text(); 
    }).get(); 
    //do something with your checkValues array 
    }); 
});​ 

You can see this working here

을, 당신은 빨리 얻을 .map()을 사용할 수 있습니다 선택기에 기반한 속성의 배열.

+0

덕분에 많은 닉 – kevin

+1

슬래시를 필요로하지 않는 HTML 유효하려면 어떤 브라우저 파서는 무시합니다. –

+0

@Tim - 적어도 닫혀 야합니다. XHTML을 사용하는 동안 유효한 방법으로 사용하지 않으시겠습니까? 그것은 그것과 함께 유효한 HTML이야, 그것 없이는 XHTML이 잘못되었습니다 ... 브라우저가 그것을 완전히 무시한다는 것은 잘못된 문장입니다. 당신은 그의 DOCTYPE을 가정하고 있지만,'/>'는 * 어떤 * doctype에서도 작동합니다, 거기에는 아무런 가정도 없습니다. –

3

먼저 당신이 클에있다 : 여기

$(document).ready(function() { 
    $('#target').click(function() { 
    alert("in"); 
    var checkValues = []; 
    $('input[name=checkboxlist]:checked').each(function() { 
     alert($(this)val()); 
     checkValues.push($(this)val()); 
    }); 
    }); 
}); 

는 HTML되어 그 다음은

내 현재 jQuery를 것입니다 작동하지 전자 귀하의 체크 박스 태그

<input type="checkbox" name="checkboxlist" 

<input type="checkbox" name="checkboxlist" /> 

난 당신이

$(function(){ 
    $('#target').click(function(){ 
     var selected = new Array(); 
     $("input:checkbox[name=checkboxlist]:checked").each(function(){ 
      var val = $(this).closest("li").text(); 
      selected.push(val); 
     }); 
    }); 
}); 
4
$("input[type=checkbox]:checked").parent().text() 
0

입력 된 태그를 올바르게 닫지 않았습니다. 또한 $(this)val()$(this).val()이어야합니다. 당신이 입력 요소를 포함 리 요소의 텍스트를 취득하려는 경우

, 당신은 다음과 같이 쓸 수 있습니다 :

$(this).parents("li:first").text(); 
+1

더 간단하게 만드는'.closest ("li")'이 있습니다.) –

관련 문제