javascript - 如何让 Materialise 使用下拉列表类而不是 ID?

标签 javascript html css materialize

我正在为 OpenCart 中的新模板使用 Materialize CSS ( http://materializecss.com ),并且我正在创建导航栏。当然,对于导航栏,我需要一个下拉菜单,我查看了使用此框架对下拉按钮的要求,但它需要一个唯一的 ID 才能实际工作。

  <!-- Dropdown Trigger -->
  <a class='dropdown-button btn' href='#' data-activates='dropdown1'>Drop Me!</a>

  <!-- Dropdown Structure -->
  <ul id='dropdown1' class='dropdown-content'>
    <li><a href="#!">one</a></li>
    <li><a href="#!">two</a></li>
    <li class="divider"></li>
    <li><a href="#!">three</a></li>
  </ul>

这在 OpenCart 中不起作用,因为它循环遍历一组 PHP 代码,因此将相同的 ID 名称设置为多个菜单项,其中有子类别。

我如何更改其背后的 Javascript 以让它使用类而不是 ID?

编辑:

我相信这是触发下拉列表的 JS 代码。如您所见,它会搜索一个 ID

    // Click handler to show dropdown
    origin.unbind('click.' + origin.attr('id'));
    origin.bind('click.'+origin.attr('id'), function(e){
      if (!isFocused) {
        if ( origin[0] == e.currentTarget &&
             !origin.hasClass('active') &&
             ($(e.target).closest('.dropdown-content').length === 0)) {
          e.preventDefault(); // Prevents button click from moving window
          if (curr_options.stopPropagation) {
            e.stopPropagation();
          }
          placeDropdown('click');
        }
        // If origin is clicked and menu is open, close menu
        else if (origin.hasClass('active')) {
          hideDropdown();
          $(document).unbind('click.'+ activates.attr('id') + ' touchstart.' + activates.attr('id'));
        }
        // If menu open, add click close handler to document
        if (activates.hasClass('active')) {
          $(document).bind('click.'+ activates.attr('id') + ' touchstart.' + activates.attr('id'), function (e) {
            if (!activates.is(e.target) && !origin.is(e.target) && (!origin.find(e.target).length) ) {
              hideDropdown();
              $(document).unbind('click.'+ activates.attr('id') + ' touchstart.' + activates.attr('id'));
            }
          });
        }
      }
    });

  } // End else

最佳答案

事情是这样的,materialze.css 中的 ID 搜索是库固有的,它也有点道理,因为 javascript 还如何知道通过单击按钮触发哪个下拉菜单?作为我能想到的解决方法,您可以做的是为您通过 PHP 循环创建的每个下拉菜单生成不同的 ID。假设您在每个循环中生成下拉菜单,我可以想到一种非常简单的方法来执行此操作。你可以在你的 PHP 循环中有一个计数器,每次只用这个循环变量替换你的 php 代码的 ID 部分。希望这可以帮助!干杯!

关于javascript - 如何让 Materialise 使用下拉列表类而不是 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40806912/

相关文章:

jquery - 悬停图像 - 部分表格出现,直到悬停另一个如何?

java - 如何使用 JavaScript 访问保存在请求范围内的数组或列表?

javascript - 动态创建的弹出窗口无法与 jQuery 绑定(bind)

javascript - 隔离范围 '=' 传递字符串而不是对象

css - 在 Jira 的小工具中加载资源

html - 父 DIV 内的 2 个 DIVS

javascript - ondragover 事件改变颜色

php - <p> 文本上的滚动条

html - 使用 CSS 调整表格单元格间距

html - 用动画显示一个句子