2010-04-26 90 views
6

嗨我想獲得選定的複選框列表ina頁面,實際上我真正需要的是獲取複選框,這是一個html元素旁邊的元素的文本<li> 代碼在下面和它不工作Jquery得到選定的複選框

這裏是我當前的jQuery:

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

這裏是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> 

回答

17

你輸入需要在結束時使用/>關閉,以使HTML有效,如下所示:

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

然後,你可以這樣寫:jQuery這樣來獲取文本的數組:

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

因爲所有你需要的是父母的.text()與你的佈局,您可以使用.map()迅速得到基於選擇器的屬性數組。

+0

非常感謝尼克 – kevin 2010-04-26 11:40:01

+1

爲了使HTML有效不需要斜槓,這瀏覽器解析器將忽略。 – 2010-04-26 11:46:52

+0

@Tim - 至少它必須關閉,爲什麼不在XHTML中以有效的方式進行操作?這是有效的HTML,它是無效的XHTML沒有它...說瀏覽器將完全忽略它是一個不正確的說法。你假設他的DOCTYPE,但'/>'在任何* doctype中工作,沒有假設。 – 2010-04-26 13:52:06

3

首先你必須CLOS你e checkbox標籤

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

應該

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

我想,從你的HTML就可以得到LIS的文本,這將是所需的文本

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

如果要獲得li元素的包含輸入元素中的文本,可以如下寫:

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

有一個'.closest(「li」)'使得這個更簡單;) – 2010-04-26 11:29:48