定义泛型函数jquery

时间:2014-01-29 19:48:11

标签: javascript jquery function checkbox syntax

我有一个简单的函数,当用户点击给定的复选框时会显示div。我想在另一个复选框上有相同的行为,所以这就是为什么我想将它概括为传递要显示的元素的函数。

但我不知道Jquery的语法是这样做的。它会在页面加载时自动触发。有人有想法吗?

代码:

$(document).ready(function() {

$("#transcricao").change( 
    function(){ 
        if ($('.form_transcr').css('display') === 'none') {
            $('.form_transcr').fadeIn(); 
        } else {
            $('.form_transcr').fadeOut();
        }
    }
); //This is working fine!


$("#traducao").change( show_hide($('.form_trad')) ); 
//This is auto-trigerring without user action...

});

这是我的功能:

function show_hide($elm){ 

//This is the "generalized" function that I'd like to use on both
//checkboxes, just passing the element.

if ($($elm).css('display') === 'none') {
        $($elm).fadeIn(); 
    } else {
        $($elm).fadeOut();
    }   
}

2 个答案:

答案 0 :(得分:0)

由于您正在调用它,因此无需用户操作即可自动触发。

使用

$("#traducao").change(function () {
    show_hide($('.form_trad'));
});

当您传递jQuery对象时,请直接使用

function show_hide($elm) {
    //This is the "generalized" function that I'd like to use on both
    //checkboxes, just passing the element.
    if ($elm.css('display') === 'none') {
        $elm.fadeIn();
    } else {
        $elm.fadeOut();
    }
}

答案 1 :(得分:0)

.change()的参数应该是一个函数。您没有传递函数,而是调用函数。

$("#traducao").change(function() {
    show_hide($('.form_trad'));
} ); 

顺便说一下,你的show_hide函数似乎等同于jQuery的fadeToggle方法,所以它可以是:

$("#traducao").change(function() {
    $(".form_trad").fadeToggle();
});