javascript - 如何在所有元素上仅触发一次toggle()?

标签 javascript jquery function click toggle

如何才能只触发一次切换?

我有...

<%= f.check_box :push %>
<label for="challenge_push" class="reminder-choices">Push</label>
<%= f.check_box :message %>
<label for="challenge_message" class="reminder-choices">Text</label>
<%= f.check_box :mail %>
<label for="challenge_mail" class="reminder-choices">Email</label>

<script>
  $('.reminder-choices').click(function(){
    $(".hide-remind").toggle();
  });
</script>

我试过了...

# Same behavior as above. Still toggles back and forth.
$('.reminder-choices').one("click", function(){
    $(".hide-remind").toggle();
});

换句话说,一旦.reminder-choices被点击一次,切换就会起作用,否则如果再次点击,它将不起作用。

最佳答案

你的第二次尝试应该会成功。你也可以这样做。

$('.reminder-choices').on('click.reminder', function() {

    $(".hide-remind").toggle();
    $(this).off('click.reminder');
    
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="reminder-choices">Click Here</div>
<div class="hide-remind">Will be toggled</div>

编辑:如果您有多个元素,并且希望在单击其中一个元素后忽略所有元素上的点击:

$('.reminder-choices').on('click.reminder', function() {

    $(".hide-remind").toggle();
    $('.reminder-choices').off('click.reminder');
    
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="reminder-choices">Click Here</div>
<div class="reminder-choices">Or Here</div>
<div class="reminder-choices">Or Here</div>

<div class="hide-remind">Will be toggled</div>

关于javascript - 如何在所有元素上仅触发一次toggle()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43627253/

相关文章:

javascript - 将变量传递给嵌套 jQuery 函数

javascript - Yii CGridView/CListView 在 AJAX 更新上调用 JavaScript 函数

jQuery:链接多个子元素

C - 函数的意外输出(基本/初学者代码)

javascript - 如何从 Web url 加载元数据,类似于我们在状态更新上发布 url 时 facebook 所做的事情...?

javascript - 将文档添加到父文件夹?

javascript - 使用 jQuery 和 JavaScript 动态检测多个下拉选择和段落内容

javascript - 在页面加载时淡入 div

javascript - 重复函数,同时递增 [i]

python - 在 Python 解释器中调试代码