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

时间:2015-03-14 18:13:55

标签: javascript jquery regex

我有很多带有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 = ??? ;
    }
});

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

2 个答案:

答案 0 :(得分:2)

尝试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

答案 1 :(得分:0)

$('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/