我正在尝试编写通用代码
var rodd = $('#checkBox');
我想将rodd传递给函数并检查它是否已被检查
Callme(rodd);
$(rodd).click(function() {
Callme(this);
});
function Callme(rodd){
if(this.checked){
// do some behavior
}
}
答案 0 :(得分:15)
如果rodd
是jQuery对象:
function Callme(rodd) {
if (rodd.is(":checked")) {
// ...
}
}
或:
function Callme(rodd) {
if (rodd[0].checked) {
// ...
}
}
答案 1 :(得分:5)
这应该有效:
//Assuming rodd is a jquery element
Callme(rodd);
rodd.click(function() {
Callme($(this));
});
function Callme(rodd){
if(this.is(":checked"){
// do some behavior
}
}
请记住,事件侦听器指向DOM元素,而不是jquery元素。因此,您需要使用$(this)表达式将其转换为jquery元素。
答案 2 :(得分:1)
查看代码,将jQuery对象rodd
传入函数以返回jQuery对象$(rodd).click...
可能更容易做到
$('#checkBox').click(Callme);
function Callme(rodd){
if(this.checked){
// do some behavior
}
}
或
$('#checkBox').click(Callme);
function Callme(rodd){
if($(this).is(':checked')){
// do some behavior
}
}
这也消除了仅执行传递事件目标的Callme()
的匿名函数事件处理程序。 Working Demo 此处。
修改强>
目前,上面的Callme(rodd)
期望传入HTMLElement object
。如果您希望能够传入jQuery对象,只需更改为
$('#checkBox').click(function(event) {
Callme($(event.target));
});
function Callme(rodd){
if(rodd.is(':checked')){
alert('checked');
}
}
虽然就个人而言,我会将其作为传递的元素并在Callme
函数中进行包装。您可能需要考虑在rodd
参数前添加$
前缀,以明确表示需要jQuery对象。