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

发布于 2024-12-19 10:07:00 字数 680 浏览 1 评论 0原文

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

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

$('.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>

The JQuery below displays a hidden div whenever "volume" is selected from my drop-down select. The problem is when I clone the div that wraps the drop-down, the logic only works on the original div and the hidden div gets displayed underneath the original and cloned divs.

Nothing happens when I select "volume" from my cloned element.

$('.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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ペ泪落弦音 2024-12-26 10:07:00

试试这个:

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

我认为里面有 .toggleSlide() 可能会让你感到困惑。

另外, $('hiddenBreak').hide(); 行可能没有执行任何操作,如果您想隐藏该 div,则需要将其替换为 $('. hiddenBreak').hide();

Try this instead:

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

I think having .toggleSlide() in there might be messing you up.

Also the line $('hiddenBreak').hide(); is probably not doing anything, if you want to hide that div, you'll need to replace that with $('.hiddenBreak').hide();

滴情不沾 2024-12-26 10:07:00

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

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

You need to use live to fix this I think as your binding happens before the creation of the cloned element.

$('select.discount').live('change', function() {
    if ($('.discount').val() == 'volume') {
            $('.hiddenBreak').slideToggle('medium');
        } else {
            $('.hiddenBreak').slideUp('fast');
        };
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文