【问题标题】:Dynamic class name from hash value with jquery使用 jquery 来自哈希值的动态类名
【发布时间】:2018-04-14 12:35:11
【问题描述】:

我有一个标签集,每个标签都有唯一的 ID。以及每个选项卡中上传按钮中具有唯一类名的函数。所以我想获取哈希值来动态构建一个新的类名。与我构建的函数一起使用。

例子:

URL : www.myweb.com/upload.php#tab1

jS

var hash=location.hash;//grab hash = tab1
$('.upload_'.hash).uploadPic({//expect className= '.upload_tab1'
.
.
.
});

html

<button id="upload_tab1">Browse</button>

我试过了,但由于某些原因它不起作用。没有错误,什么都没有。请帮忙。

【问题讨论】:

  • 使用+在js中连接字符串而不是.
  • 还是不行,@guradio
  • 添加类使用$('.upload_').addClass(hash)
  • @guradio,我现在知道了。因为location.hash 给了我#tab1。所以类名是upload_#tab1 而不是upload_tab1。所以我改为window.location.hash.substr(1),它只给我价值。
  • 是的,因为?

标签: javascript jquery hash


【解决方案1】:

正如其他人所提到的,您需要使用 + 而不是 . 来连接 JavaScript 中的字符串。

但是,这仍然不能解决您的问题,因为 window.location.hash 返回的值包括片段前面的哈希 (#) 符号:

const hash = window.location.hash; // value is "#tab1"

所以你需要去掉井号:

const hash = window.location.hash.substring(1); // value is "tab1"

为防止在未指定片段的情况下出错,您可能需要先检查井号是否存在:

let hash = window.location.hash;
hash = hash.startsWith('#') ? hash.substring(1) : hash;

【讨论】:

  • 这行得通,只要改变抓取哈希值的方式,把#关掉!
  • 我在每个按钮中也有数据属性。但它没有被脚本占用:&lt;button class="upload_tab1" data-cate="head" data-size="S"&gt;Browse&lt;/button&gt;。我使用 ajax 来获取数据:formData: {"cate":$(this).attr("data-cate"),"size":$(this).attr("data-size")}, 但它没有通过表单传递。有什么想法吗?
  • 可能更好地提出一个新问题并添加相关代码。这可能会有所帮助:api.jquery.com/data
猜你喜欢
  • 1970-01-01
  • 2017-08-29
  • 2015-05-27
  • 1970-01-01
  • 2014-05-11
  • 2019-07-28
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
相关资源
最近更新 更多