繁体   English   中英

如何在属性中提取值的一部分

[英]How to extract a part of a value inside an attribute

我有许多带有onclick函数的超链接,它们通过这种方式具有不同的值:

<a onclick="Utils.decideOffer('', {'unlockFeature': 'cars'});">cars text</a>
<a onclick="Utils.decideOffer('', {'unlockFeature': 'bikes'});">bikes whatever</a>
<a onclick="Utils.decideOffer('', {'unlockFeature': 'motorcycles'});">another motor</a>

现在,当单击此元素时,我需要获取该数组的值,例如:“cars”,或“bikes”或“motorcycles”。

不建议从Utils.decideOffer函数中获取它们,因为我需要在不编辑该文件/函数的情况下获取它们。 这就是我打算提取它的方式。

$('a').click(function() {
    onclickValue = $(this).attr('onclick');
    if (onclickValue.length) {
      var optionSelectedValue = ??? ;
    }
});

我正在考虑使用正则表达式,所以你能帮我在正则表达式上使用这个案例吗?或者如果你有另一个好主意来实现它,也欢迎!

尝试split()如:

$('a').click(function() {
    onclickValue = $(this).attr('onclick');
    if (onclickValue.length) {
      var optionSelectedValue = onclickValue.split(":")[1].split("}")[0];
    }
});

它会返回'cars''bikes''motorcycles'包括报价

请参阅JSFIDDLE

...或者根据建议获得没有引号的值:

optionSelectedValue = onclickValue.split(":")[1].split("}")[0].split("'")[1];

请参阅更新的JSFIDDLE

$('a').click(function() {
    onclickValue = $(this).attr('onclick');
    if (onclickValue.length) {
        var re = /(?!: ')+(\w)+(?='})/;
var found = onclickValue.match(re);
      var optionSelectedValue = found[0] ;
        alert(optionSelectedValue);
    }
});

演示: http//jsfiddle.net/wpjh1ma7/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM