在克隆元素上选择选项逻辑

时间:2011-12-02 21:31:43

标签: jquery select drop-down-menu clone

每当从我的下拉选择中选择“音量”时,下面的JQuery会显示一个隐藏的div。问题是,当我克隆包装下拉列表的div时,逻辑仅适用于原始div,隐藏的div显示在原始和克隆的div下面。

当我从克隆元素中选择“volume”时没有任何反应。

$('.hiddenBreak').hide();

$('select.discount').change(function(){
    if ($('.discount').val() == 'volume') {
            $('.hiddenBreak').slideToggle('medium');
        } else {
            $('.hiddenBreak').slideUp('fast');
        };
});

<div>
    <select class="discount">
       <option value="volume">Volume</option>
       <option value="nothing">Nothing</option>
    </select>
</div>

<div class="hiddenBreak">
  Message goes here
</div>

2 个答案:

答案 0 :(得分:0)

请改为尝试:

if ($('.discount').val() == 'volume') {
        $('.hiddenBreak').slideDown('medium');
    } else {
        $('.hiddenBreak').slideUp('fast');
    }

我觉得那里有.toggleSlide()可能会搞砸你。

此行$('hiddenBreak').hide();可能没有做任何事情,如果你想隐藏该div,你需要用$('.hiddenBreak').hide();替换它

答案 1 :(得分:0)

你需要使用live来解决这个问题,我认为你的绑定会在创建克隆元素之前发生。

$('select.discount').live('change', function() {
    if ($('.discount').val() == 'volume') {
            $('.hiddenBreak').slideToggle('medium');
        } else {
            $('.hiddenBreak').slideUp('fast');
        };
});