【发布时间】:2014-03-07 18:24:09
【问题描述】:
我有一个由 ajax 生成的内容页面,并用一排复选框进行组织。单击任一复选框会将参数传递到 URL,该参数用于创建 SQL 查询。我想将复选框添加到页面的另一部分,但是当我这样做时,我无法保持复选框的样式(有一个用于选中和未选中状态的自定义样式)。单击任一行复选框将正确组织数据,但只有一行复选框会显示选中/选中状态。
我正在使用以下代码来设置复选框的样式:
$(':checkbox').change(function() {
if($(this).is(":checked")) {
$(this).next('label').children('div').removeClass("sort-not-active").addClass("sort-active");
}
else {
$(this).next('label').children('div').removeClass("sort-active").addClass("sort-not-active");
}
});
我的复选框的 HTML 如下。我认为我的样式问题可能是由于我将变量作为 ID 而不是类传递的,但是每当我删除 ID 时,复选框就会完全停止工作。
<?php foreach (array_unique($disciplines) as $discipline): ?>
<input class="disciplinechecks" type="checkbox" id="<?php echo $discipline; ?>" name="<?php echo $discipline; ?>" value="<?php echo $discipline; ?>" onChange="checkBoxChange(this.checked,'<?php echo $discipline; ?>');">
<label for="<?php echo $discipline; ?>">
<div class="sort-genre sort-active"><?php echo $discipline; ?></div>
<span></span>
</label>
<?php endforeach ?>
下面是我用来将值传递到 URL 的函数。这里没有引用 ID,所以我不知道为什么从我的复选框中删除 ID 会破坏它:
var typeItemsChecked = Array( ALL OF THE $DISCIPLINE VALUES ARE HERE );
function checkBoxChange(x,y) {
if(x){
var type = y;
typeItemsChecked.push(type);
showUser();
}
else {
var type = y;
typeItemsChecked.remove(type);
showUser();
}
}
function getURLString() {
joinedTypeItemsChecked = typeItemsChecked.join();
var queryString = [
("d="+joinedTypeItemsChecked)
];
var url = queryString.join("&");
return url;
}
这是 PHP 之后 HTML 的样子
<input class="disciplinechecks" type="checkbox" id="Web Design" name="Web Design" value="Web Design" onChange="checkBoxChange(this.checked,'Web Design');">
<label for="Web Design">
<div class="sort-genre sort-active">Web Design</div>
<span></span>
</label>
<input class="disciplinechecks" type="checkbox" id="Print Design" name="Print Design" value="Print Design" onChange="checkBoxChange(this.checked,'Print Design');">
<label for="Print Design">
<div class="sort-genre sort-active">Print Design</div>
<span></span>
</label>
【问题讨论】:
-
你能给我们展示一些最终 HTML 的样本吗(例如,在 PHP 被处理之后)?
-
我在上面添加了它
-
因此,在第二行复选框(不起作用的复选框)中,他们是否会为
id、name等使用相同的属性值,还是基于在不同的$discipline值集上? -
完全一样
-
页面加载时是这两组复选框还是稍后添加的第二组?
标签: javascript php jquery html checkbox