2010-04-26 17 views
6

Hallo Ich möchte die Liste der ausgewählten Kontrollkästchen in einer Seite erhalten, eigentlich, was ich wirklich brauche, ist der Text des Elements neben dem Kontrollkästchen, das ein HTML-Element ist <li> der Code ist unten und seine nicht funktioniertJquery Wählen Sie Checkboxen

Hier ist meine aktuelle jQuery:

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

Hier ist der HTML:

<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> 

Antwort

17

Ihre Eingaben müssen sein mit einem /> am Ende geschlossen werden, um Ihren HTML-Code gültig zu machen, wie folgt:

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

Dann können Sie jQuery tun, wie diese eine Reihe von Text zu erhalten:

$(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

Da alles, was Sie .text() ist das übergeordnete müssen mit Ihrem Layout, können Sie .map() verwenden, um schnell eine bekommen Array einer Eigenschaft basierend auf dem Selektor.

+0

Vielen Dank Nick – kevin

+1

Um die HTML gültig machen nicht den Schrägstrich erfordern, die Der Browser-Parser wird ignoriert. –

+0

@Tim - Zumindest muss es geschlossen werden, warum nicht es in einer XHTML-gültigen Weise tun, während Sie dabei sind? Es ist valides HTML mit ihm, es ist ungültiges XHTML ohne es ... sagend, dass der Browser es vollständig ignoriert, ist eine falsche Aussage. Sie nehmen seinen DOCTYPE an, aber '/>' funktioniert in * jedem * Doctype, keine dort getroffenen Annahmen. –

3

allererst Sie clos haben e Ihr Checkbox Tag

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

sollte

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

sein Ich denke, von Ihrem HTML Sie den Text der lis bekommen kann, die den gewünschten Text

$(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

Sie schließen Ihre Eingabe-Tags nicht korrekt. Außerdem sollte $(this)val()$(this).val() sein.

Wenn Sie den Text von li Element zu erhalten beabsichtigen, die das Eingangselement enthält, können Sie wie unten schreiben:

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

Da ist ein '.closest (" li ")', das macht das einfacher;) –

Verwandte Themen