Javascript 有没有更好的方法在检查收音机的情况下隐藏和显示div?

Javascript 有没有更好的方法在检查收音机的情况下隐藏和显示div?,javascript,jquery,joomla,input,radio,Javascript,Jquery,Joomla,Input,Radio,我创建了这段代码几天,但我相信它是可以改进的,有人可以帮助我创建一个更智能的方法吗 // Hide registered or customized field if not checked. function checkUserType(value) { if (value == 2) { $('#registered').hide(); $('#customized').show(); } else if (value == 1) { $('#register

我创建了这段代码几天,但我相信它是可以改进的,有人可以帮助我创建一个更智能的方法吗

// Hide registered or customized field if not checked.
function checkUserType(value) {
  if (value == 2) {
    $('#registered').hide();
    $('#customized').show();
  } else if (value == 1) {
    $('#registered').show();
    $('#customized').hide();
  }
}

checkUserType($('input:radio[name="jform[place_type]"]:checked').val());

$('#jform_place_type').on('click', function () {
  checkUserType($('input:radio[name="jform[place_type]"]:checked').val());
});

演示:

您可以通过存储DOM元素并缓存其余元素来提高Jquery的性能。我想这是你能达到的最大限度了

function checkUserType(value) {
  var r = $("#registered");
  var c = $("#customized");
  if (value == 2) {
    r.hide();
    c.show();
  } else if (value == 1) {
    r.show();
    c.hide();
  }
}

var func = function () {
  checkUserType($('input:radio[name="jform[place_type]"]:checked').val());
};

$('#jform_place_type').on('click', func);
如需进一步阅读,请检查此项

特别是阅读文件的第三段

缓存jQuery对象

养成将jQuery对象保存到变量的习惯(与上面的示例非常相似)。例如,决不(eeeehhhver)这样做:

相反,首先将对象保存到局部变量,然后继续操作:

var $active_light = $('#traffic_light input.on');
$active_light.bind('click', function(){...});
$active_light.css('border', '3px dashed yellow');
$active_light.css('background-color', 'orange');
$active_light.fadeIn('slow');
提示:因为我们想记住我们的局部变量是一个jQuery包装集,所以我们使用$作为前缀。请记住,不要在应用程序中多次重复jQuery选择操作。

如果您不止一次需要一个选择器,然后缓存它,我认为这就是Claudio allready提到的对象缓存,这就是为什么您会看到很多:

$this=$(this);
$myDivs=$("some selector");
保存jquery函数(jquery对象)结果的变量的约定是,它们以$开头,但由于它只是一个变量名,所以您可以随意调用它,以下方法也可以:

me=$(this);
myDivs=$("some selector");

或者简单地链接操作:jQuery对象上的大多数函数将返回相同的对象,即$('#traffic_light input.on').bind('click',function(){…}).css('border','3px虚线黄色').css('background-color','orange').fadeIn('slow'))
    $('#jform_place_type').on('click', function () {
//show is true if the val() of your jquery selector equals 1
// false if it's not
      var show= ($('input:radio[name="jform[place_type]"]:checked')
        .val()==1);
//set both divs to visible invisible / show !show(=not show)
// (not show) means that if show=true then !show would be false
      $('#registered').toggle(show);
      $('#customized').toggle(!show);
    });
$this=$(this);
$myDivs=$("some selector");
me=$(this);
myDivs=$("some selector");