【问题标题】:Setting a Wildcard Value设置通配符值
【发布时间】:2019-11-28 13:55:15
【问题描述】:

下面是我的代码。我需要 * 作为通配符,这样任何数字都可以代替它。有什么想法吗?

$('body').on('click', '.custom_295_*-row', function(){
  var href = "https://randomsite.co.uk/forms/mortgage-club-proc-fees";
  popup(href, '', 600, 600);
})

【问题讨论】:

  • jQuery 中没有通配符选择器。您可能会使用“属性开始于”和“属性结束于”选择器,但如果元素上有多个类,这将很容易被破坏。最好的解决方案是将相同的类放在每个元素上,根本不用担心通配符。特别是考虑到通配符中的值与事件处理程序中的逻辑没有任何关系。
  • 您可以使用'[class^=custom_295_][class$=-row]'。但是,最好为每个元素添加相同的类。
  • @RoryMcCrossan - 大家好,很遗憾,我无法从 CRM 系统生成行。我如何为所有行分配一个类。我之前尝试过 [class^=custom_295_][class$=-row] 但它不起作用。
  • How can i assign a class to all the rows 修改您的 CRM 使用的模板。或者,您可以根据它们的祖先来选择元素,但是如果没有看到 HTML,我们将无能为力
  • @Moe,你能提供一个标记示例吗?这将有助于找到一个实际的解决方案。

标签: javascript jquery wildcard


【解决方案1】:

我会直接将点击处理程序添加到对象:

$("*[class^=custom_295_][class$=-row]").on('click', e => { 
    console.log(e);
})

https://jsfiddle.net/an2w81dv/

如果你不想这样,你可以像这样检查处理程序中的元素类:

$("body").on("click", (e) => {
    console.log("now check the class with a RE", e.target.className);
    if (e.target.className.match(/^custom_295_(.*)-row$/)) {
        console.log("now do something..");
    }
})

【讨论】:

  • I have tried [class^=custom_295_][class$=-row] before and it doesnt work
  • 1) 我不是 OP。 2) 这仅在 custom_295_*-row 类是元素上的 only 类时才有效。显然它不适合 OP,因为它不起作用。 3)你的第二个例子似乎是一半的答案。您究竟如何过滤 className 以匹配您要查找的值?
  • 添加了一个 jsfiddle 以表明它确实有效,并展示了如何使用 RE 来测试 className
  • 是的,第一个示例仅在类是元素上唯一的类时才有效。否则当然可以使用 *=。
猜你喜欢
  • 1970-01-01
  • 2011-02-19
  • 1970-01-01
  • 2015-11-23
  • 1970-01-01
  • 1970-01-01
  • 2011-06-09
  • 2011-02-17
  • 1970-01-01
相关资源
最近更新 更多