正确添加类的方法AJAX调用
Proper Way to Append Class & AJAX Call
好的,所以我真的不认为我正确地构建了我的JS,我希望有人能指出我在正确的方向。我不认为按顺序为每个列表项命名类是一种有效的或正确的方法。
我有一个复选框列表,当点击时,需要执行两个操作:
1)切换div的类名
2)通过AJAX发布状态。这是我当前的标记:
<ol class="toolkitList">
<li>
<label><input class="inlineCheckers" type="checkbox" id="checkers" onchange="setCheck();" /><b id="grayTitle">List Title 1</b></label>
<i id="hiddenDiv">Div content can go here.</i>
</li>
<li>
<label><input class="inlineCheckers" type="checkbox" id="checkers2" onchange="setCheck2();" /><b id="grayTitle2">List title 2</b></label>
<i id="hiddenDiv2">Div content can go here.</i>
</li>
<li>
<label><input class="inlineCheckers" type="checkbox" id="checkers3" onchange="setCheck3();" /><b id="grayTitle3">List title 3</b></label>
<i id="hiddenDiv3">Div content can go here.</i>
</li>
<li>
<label><input class="inlineCheckers" type="checkbox" id="checkers4" onchange="setCheck4();" /><b id="grayTitle4">List Title 4</b></label>
<i id="hiddenDiv4">Div content can go here.</i>
</li>
</ol>
这是我当前的JS:
function setCheck() {
var el = document.getElementById("checkers");
if (el.checked) {
document.getElementById("hiddenDiv").className = "main";
document.getElementById("grayTitle").className = "titleGray";
} else {
document.getElementById("hiddenDiv").className = "";
document.getElementById("grayTitle").className = "";
}
}
function setCheck2() {
var el2 = document.getElementById("checkers2");
if (el2.checked) {
document.getElementById("hiddenDiv2").className = "main";
document.getElementById("grayTitle2").className = "titleGray";
} else {
document.getElementById("hiddenDiv2").className = "";
document.getElementById("grayTitle2").className = "";
}
}
function setCheck3() {
var el3 = document.getElementById("checkers3");
if (el3.checked) {
document.getElementById("hiddenDiv3").className = "main";
document.getElementById("grayTitle3").className = "titleGray";
} else {
document.getElementById("hiddenDiv3").className = "";
document.getElementById("grayTitle3").className = "";
}
}
function setCheck4() {
var el4 = document.getElementById("checkers4");
if (el4.checked) {
document.getElementById("hiddenDiv4").className = "main";
document.getElementById("grayTitle4").className = "titleGray";
} else {
document.getElementById("hiddenDiv4").className = "";
document.getElementById("grayTitle4").className = "";
}
}
我意识到我还没有这个设置的AJAX部分,但我想让这个需求为人所知,因为我很快就会将这部分添加到代码中。感谢您提供的任何指导!
我是这样做的:
$toolkitlist.on( 'change', '.inlineCheckers', function () {
$( this ).closest( 'li' ).toggleClass( 'checked', this.checked );
});
,其中$toolkitlist
是包含OL元素的jQuery对象。注意我是如何在LI元素上设置类的,因为LI元素是表示选中项的最外层元素。你可以使用这些选择器来设置"checked"状态的样式:
/* how they look like initially */
.grayTitle { ... }
.hiddenDiv { ... }
/* how they look like when their check-box is checked */
li.checked .grayTitle { ... }
li.checked .hiddenDiv { ... }
使用jQuery的 addClass
$('#grayTitle3').addClass('titleGray');
更新,使用 ^=
:
$('[id^=grayTitle]').addClass('titleGray');
您也可以将类应用于外部div
CSS:.selected label b {
color:blue
}
.selected i {
color:red
}
JS:
$(".inlineCheckers").on('click',function(){
$(this).parents("li").toggleClass('selected',$(this).is(":checked"));
})
jsfiddle: http://jsfiddle.net/y2rHF/3/
删除inline .onchange..并将更改事件绑定到您的类.inlineCheckers - then you can use
this ',这样您就不必为每个集合创建多个函数
$('.inlineCheckers').on('change', function {
$el = $(this);
var $hd = $el.closest('label').next('i');
var $gt = $el.next('b');
$hd.toggleClass('main', $el[0].checked);
$gt.toggleClass('checkers', $el[0].checked);
}
http://jsfiddle.net/KYzgB/相关文章:
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- AJAX不会在文件上传后重定向到网页-POST方法
- 错误405:向Java控制器(Ajax)发送JSON时找不到POST方法
- 通过ajax从客户端调用C#方法来执行C#方法
- 使用Ajax的问题's发送多个值的Post方法
- 使用javascript ajax post方法的未定义偏移PHP错误
- 如何在ajax中调用javascript对象的方法
- 如何使用get或post方法连接和执行ajax
- Jquery ajax方法请求体为null,但poster工作正常
- jQuery/Ajax-试图通过Ajax创建POST方法并获得对HTML的响应
- javascript中是否有更标准化的方法来转换(序列化)非表单数据以与ajax一起使用
- 如何使用发布方法 (AJAX) 调用异常
- 跨域 Post 方法 ajax 调用使用 jQuery 和 XML 响应
- 405:不允许使用方法(AJAX 查询到 Flask)
- 我的排序方法(AJAX,PHP&MySQL)出了什么问题
- 调用母版页“;CS”;方法(ajax不起作用)
- 将JSON对象发布到web方法$.ajax
- POST到Javascript中的类方法(Ajax ->PHP)
- 未捕获类型错误:不能调用方法'ajax'的定义
- 正确添加类的方法AJAX调用