我有以下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')
答案 0 :(得分:1)
尝试
$('#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'));
希望有所帮助