2010-02-26 54 views
20

我想用一個jQuery「檢查所有」功能,在這樣的形式與JS數組名稱的所有複選框: http://jetlogs.org/jquery/jquery_select_all.html的jQuery - 選擇

我的問題是我從一個PHP腳本生成自己的狀態,我不知道我會提前多少個複選框。 我用的是「陣列」命名約定,能得到我的$ _ POST數據所有選定的複選框值... 所以我複選框是這樣的:

<input type="checkbox" name="items[]" value="<?php echo $id ?>"> 

但這個jQuery聲明不起作用:

$("input[@name=items[]]").each(function()  
{  
    this.checked = checked_status;  
}); 

可能是因爲「[]」在我的「項目」攪亂JQuery的聲明結束......我試着寫@名稱=項目[]這樣的:「@名稱=項目[] 「,並在[和]之前加上一些反斜線,以免它們被認爲是特殊字符,但它並不起作用...

如果有人知道一個解決方案,並願意分享它會很棒! :)

+0

嘗試使用類和jQuery的構建搜索引擎將爲您做的工作,而不是用for循環循環所有元素! – Kennethvr 2010-02-26 10:34:02

+0

checked_status的值是多少?它在哪裏設置? – 2010-02-26 10:36:25

回答

51

\\(無空格)轉義內部括號 - 它應該解決問題。

這個選擇對我的作品:

所有的
$('input[name=items\\[\\]]') 
+0

nope不起作用,正如我在我的帖子中所說:「...並在[和]所以...之前加上一些反斜線(= \)」 – Piero 2010-02-26 10:22:56

+0

檢查我的編輯 - 您應該從您的選擇器並使用雙反斜槓 – rochal 2010-02-26 10:25:26

+0

YupYup !!奇蹟般有效!感謝大家的幫助! 其他建議的解決方案也可能工作!但是這個似乎是最容易實現的! :) – Piero 2010-02-26 10:37:20

4

首先,你的名字屬性應該被用來設置+1元素具有相同的名稱。它實際上與id屬性相同,除了引用外,每個元素應該是唯一的,但對於您而言並非如此。

嘗試使用class屬性,它是爲你想做的事情而做的!

另一件事是,在你的代碼中,你只能將你的複選框設置爲'checked',但從不取消選中,這段代碼會根據它被點擊的屬性將你的複選框設置爲true或false元件。

你可以做這樣的事情:

設爲您的支票所有複選框與ID

<input type="checkbox" id="checkAll"> 

然後在應該檢查所有的複選框設置/取消選中一類

<input type="checkbox" class="checked"> 

而你可以在jQuery中做這樣的事情

$("#checkAll").click(function(){ 
var checkedValue = $(this).attr("checked"); 
$("input.checked").attr("checked", checkedValue); }); 

這將改變帶班檢查,以相同的檢查屬性作爲一個id爲checkAll

+0

幫助我與jquery功能,謝謝! – noname 2012-05-29 15:39:21

8

所有複選框嘗試使用

$('input[name="items[]"]') 

無需@和使用"。請注意,引號外的選擇器是'。否則,您可能會導致解析錯誤。

+0

謝謝,@Emo。它解決了。接受的答案與雙反斜槓的方法不起作用(似乎新版本不會支持它)。 – Rolice 2014-01-21 21:05:27

1
$("input[name='smsid[]']") 

此代碼適合我...

+2

解釋你的答案爲什麼會起作用會讓你的帖子更有幫助。 – 2011-05-10 22:54:29