JQuery函数声明并重用它

时间:2014-06-18 13:52:23

标签: javascript jquery

我有以下jQuery代码

$('#rta_ad_yes').click(function(){
    $('#rta_ad_pref, #rta_ad_psn').prop('disabled', false);
    $('#div_ad_pref, #div_ad_psn').addClass('has-warning');
});

$('#rta_fp_yes').click(function(){
    $('#rta_ad_fpref, #rta_ad_fpsn').prop('disabled', true);
    $('#div_ad_fpref, #div_ad_fpsn').addClass('has-warning');
});

如果您查看上面的代码,我似乎正在进行相同的编码以在两个不同的页面中实现相同的结果.. $('#rta_ad_yes')$('#rta_fp_yes')

很抱歉没有提到我的问题问题如何声明和调用该函数提供参数而不是一次又一次地输入整个事物..我不知道如何声明函数并在jquery中重用它并不是很好的jquery

3 个答案:

答案 0 :(得分:1)

尝试

.split()

$('#rta_ad_yes', '#rta_fp_yes').click(function () {
    var id = (this.id.split('_')[1] == 'fp')? 'f' : '';//get ad or fp from id
    //if it's `fp` than add `f` if not than empty string .
    $('#rta_ad_' + id + 'pref, #rta_ad_' + id + 'psn').prop('disabled', function(){
         return id.length;//return false if 0 and for 1 return true .
    }); //make id out of it
    $('#div_ad_' + id + 'pref, #div_ad_' + id + 'psn').addClass('has-warning');
});

答案 1 :(得分:1)

我相信你想在函数中抽象出来吗?

var disableAndWarn = function (config) {
  $("#" + config.id1 + ', ' + "#" + config.id2).attr('disabled', 'disabled');
  $("#" + config.id3 + ', ' + "#" + config.id4).addClass('has-warning');
}

这是FIDDLE

修改:将.prop('disabled', true)更改为.attr('disabled', 'disabled'),因为我相信您的意图。

答案 2 :(得分:1)

您可以尝试以下代码。

function isEmpty (test_obj, element){
    if(!test_obj.val().length > 0){
        element.addClass('has-warning');
        return false;
    }else{
        element.removeClass('has-warning');
        return true;
    }
};

并重复使用,如下所示

var x = isEmpty($('#rta_cl_fn'), $('#div_cl_fn'));

希望有所帮助