javascript - 如何将 .toggleClass() 与 .appendTo() 结合使用?

标签 javascript jquery html css

我将一个新类附加到 HTML 容器。如何通过单击菜单按钮来打开/关闭它? 用 JavaScript 编写更复杂的 HTML 代码甚至是“最佳实践”,还是您更喜欢另一种方法?因为我计划对更多容器执行此操作。谢谢!

$(document).ready(function() { 
    $( "a.header-login" ).click(function() {
        $("<div class='sub-menu'>" +
        "<h2>Hi x!</h2>"+ 
        "<a class='item' href='#'>Logout</a>"+ 
        "</div>")
        .appendTo("header .header-r");
    })
});

最佳答案

I want to accomplish that another click on "a.header-login" deletes the container ".sub-menu". Now, it is always generated when you click "a.header-login"

在这种情况下,您需要添加一个条件来检查该元素是否已经存在。如果它不创建它,如果它确实删除它。

jQuery(function() {
  $('a.header-login').click(function() {
    var $target = $('header .header-r .sub-menu');
    if ($target.length === 0) {
      $('<div class="sub-menu"><h2>Hi x!</h2><a class="item" href="#">Logout</a></div>').appendTo('header .header-r');
    } else {
      $target.remove();
    }
  })
});

也就是说,如果您始终在页面的 HTML 中包含 .sub-menu 但默认情况下使用 CSS 隐藏它,则可以使这个逻辑更加简单。在这种情况下,您的 jQuery 将变成对 toggle() 的简单调用:

jQuery(function() {
  $('a.header-login').click(function() {
    $('header .header-r .sub-menu').toggle();
  })
});

关于javascript - 如何将 .toggleClass() 与 .appendTo() 结合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58343025/

相关文章:

javascript - AngularJS - 单击时调用指令的监听器并将数据传递给它

javascript - 在向下钻取事件中隐藏绘图线 (Highcharts.js)

javascript - 我是否需要刷新页面来查看索引数据库是否已重置?

javascript - 在 Javascript 构造函数中将键/值对象作为参数传递

javascript - 尝试从js中的另一个文件调用变量时出错

JavaScript 测验评分函数

javascript - jQuery 有时不改变视频源

javascript - 单击按钮时更改 Element.attr

表格中重叠 <divs> 的 javascript 代码

jquery - jqgrid: getCell 总是返回 false