【问题标题】:jQuery Syntax - Getting a class starting with certain charactersjQuery 语法 - 获取以某些字符开头的类
【发布时间】:2012-02-24 10:10:28
【问题描述】:

我正在尝试将 div 类的一部分作为变量。

例如我有一个这样的 div

<div class="menu-link scrollto-1">Home</div>

我还有在单击此元素时运行的 javascript(传递的其他 2 个变量对此无关紧要,因此为了便于阅读,我已将它们删除。

$(".menu-link").click(function() {
  var scroll = $(this).hasClass("scrollto-");
  alert (scroll);
  tabChange(menuTab,page, scroll);
});

我需要做的是:

  • 获取类“scrollto-1”
  • 将此更改为“1”作为变量
  • 将此数字传递给函数 tabChange

我有点难过如何实现这一点(因为有 2 个类,而不仅仅是 1 个),我不确定如何继续。任何建议表示赞赏。

谢谢

【问题讨论】:

  • 为什么不使用divindex 来传递给你的函数呢?甚至,将div 本身传递给函数?这将使您的类更具语义化并省去很多麻烦。
  • 我不会将此作为答案,因为它可能超出主题。但是为什么不使用 jQuery 的data 函数并将变量存储在其中。我不认为使用类是个好主意,那不是他们的工作。
  • 我从来不知道数据函数。在这种情况下,我将使用类,因为我无法在短时间内学习如何使用新的东西。但是感谢您的提示:)

标签: jquery syntax jquery-selectors


【解决方案1】:

你最好把它放到数据属性中

<div class="menu-link scrollto-1" data-scroll="1">Home</div>

$(".menu-link").click(function() {
  var scroll = $(this).data("scroll");
  alert (scroll);
  tabChange(menuTab,page, scroll);
});

或者如果您想按原样重用该类:

<div class="menu-link scrollto-1" data-scroll="scrollto-1">Home</div>

$(".menu-link").click(function() {
  var scroll = $(this).data("scroll").replace("scrollto-", "");
  alert (scroll);
  tabChange(menuTab,page, scroll);
});

如果您无法更改 html:

$(".menu-link").click(function() {
  var cls = $(this).attr("class");
  var idx = cls.indexOf("scrollto-");
  var scroll = cls.substring(idx+9);
  tabChange(menuTab,page, scroll);
});

【讨论】:

    【解决方案2】:

    您可以使用正则表达式匹配从className 属性中获取数字:

    $(".menu-link").click(function() {
      var scroll = this.className.match(/scrollto-(\d+)/)[1];
      alert (scroll);
      tabChange(menuTab,page, scroll);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-27
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2018-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多