2010-02-26 55 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