【问题标题】:Jquery toggle mobile menu (remove href javascript)Jquery 切换移动菜单(删除 href javascript)
【发布时间】:2011-10-28 21:01:26
【问题描述】:

我正在尝试为我的一位客户制作移动网站的 jQuery 切换菜单。我得告诉你我在 javascript 方面没有经验,我刚刚开始研究它。

当前网站是一个Wordpress网站,所以菜单结构是由WP生成的。

因为这是由 WP 生成的,所以我需要使用 javascript 来操作数据以添加 + - 和 > 符号以进行切换,如果没有孩子直接进入页面。

我使用这个 javascript 添加带有所需图标的跨度。到目前为止我已经成功了。

http://jsfiddle.net/9Dvrr/9/

但还有两个问题我似乎无法弄清楚。

  1. 当“li”有一个“ul”子元素时,从“a”中删除href。 这应该会删除项目的链接,因此它们只会切换(而不是链接)以直接导航到最深层次。
  2. 目前,javascript 正在使用图标添加多个跨度。我似乎无法弄清楚为什么

我现在为此纠结了一段时间,想知道是否有人可以帮助我。

【问题讨论】:

    标签: javascript wordpress mobile jquery


    【解决方案1】:

    在您提供的 jsfiddle 中,您循环元素以添加带有“+”或“-”符号的跨度,具体取决于具体情况。问题是,您开始使用的 HTML 中已经包含这些跨度,这就是您看到一些重复项的原因。

    正如您所说,由于您的 WP 结构,您无法在 HTML 中添加这些跨度,我猜它们来自您在创建 jsfiddle 时所做的错误复制/粘贴。我在 HTML 中删除了它们并添加了一个 return false 以防止当 a 标签内有 ul 时链接到另一个页面。

    http://jsfiddle.net/wzzGG/

    【讨论】:

    • 您在哪里对这些仍然存在错误的复制/粘贴感到抱歉。不知何故,“return false”仍然存在于菜单的最低级别,其中 a 标签内没有 ul。并且应该显示 > 箭头。 (就像你 jsfiddle 中的“Reserveren”)
    • 感谢您帮助我。真的很感激!
    • 我认为以下是问题所在: if ($this.has('ul').children('a').length >= 1) { $this.find('a') .append("+ ").addClass('plus').click(function() { 这会将 span + & return false 附加在“UL”中的所有“a”标签。但是因为“ul”中有“ul”,所以这些“a”标签已经通过第一个“ul”获得 span&return。有没有办法只找到下一个“a”标签并给它 span%return跨度>
    【解决方案2】:

    您的第一个问题可以通过以下方式解决:

    $.each($('#menu-mobiel li'), function(i, value) {
        var $this = $(this);
        if ($this.has('ul').length > 0) {
            $this.children('a').attr('href','javascript:');
        }
    

    你的第二个问题对我来说有点难以理解。您是否只需要一个 + 表示带有子菜单的项目,而一个 > 表示带有链接的项目?

    【讨论】:

    • 这就是我要找的。正如 Leo 发布的那样,我在 HTML 中复制/粘贴了一些跨度不好,从而提供了更多的跨度。
    猜你喜欢
    • 2017-01-15
    • 1970-01-01
    • 2019-07-23
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多