如何将jquery对象传递给函数?

时间:2009-09-25 10:19:47

标签: jquery

我正在尝试编写通用代码

var rodd = $('#checkBox');

我想将rodd传递给函数并检查它是否已被检查

Callme(rodd);

$(rodd).click(function() {
Callme(this);
});

function Callme(rodd){
if(this.checked){
// do some behavior
}
}

3 个答案:

答案 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对象。