无线电上的fadeIn / fadeOut <div>和/或选择的选项

时间:2015-05-28 13:35:07

标签: javascript jquery

我无法找到完美的解决方案。 如果我点击选择选项和/或单选按钮,有没有一种简单的方法来淡化".filter_on" div?

默认情况下,让这个div在之后再次淡出?

My fiddle

<div class="filter">
Filter <span class="filter_on">active</span>
</div>

<form>
    <p>Vehicle?</p>
     <select name="vehicle" size="2">
        <option>Bike</option>
        <option>Car</option>
     </select>
</form>

<form>
    <p>City?</p>
        <input type="radio" id="all" name="city" value="All" checked>
        <label for="all"> All</label></input>
        <input type="radio" id="ny" name="city" value="New York">
        <label for="ny"> New York</label></input>
        <input type="radio" id="mh" name="city" value="Manhattan">
        <label for="mh"> Manhattan</label></input>
</form>

2 个答案:

答案 0 :(得分:2)

您不需要fadeOut,因为您无法从下拉列表中取消选中或无法取消选中单选按钮。

$('select, :radio').on('change', function() {
    if ($('select option:selected').length === 0 && $(':radio:checked').val() === 'All') {
        $('.filter_on').fadeOut();
    } else {
        $('.filter_on').fadeIn();
    }
}).trigger('change');

trigger将自动执行此功能。页面上会fadeIn加载。

演示:https://jsfiddle.net/tusharj/vyd7a2s8/1/

答案 1 :(得分:0)

演示 - &gt; http://jsfiddle.net/vyd7a2s8/4/

var defaultRadio = $(':radio:checked');
var defaultVehicle = $('[name=vehicle] option:selected');
$('[name=vehicle],[name=city]').on('change', function (e) {
    var currentRadio = $(':radio:checked');
    var currentVehicle = $('[name=vehicle] option:selected');

    if (currentRadio[0].isEqualNode(defaultRadio[0]) && currentVehicle[0].isEqualNode(defaultVehicle[0])) {
        $('.filter_on').fadeOut(500);
    } else {
        $('.filter_on').fadeIn(500);
    }
});

说明 - 这会将默认选定值存储在函数外部,并在click事件中使用它们来检查新选择的值。