我有很多带有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 = ??? ;
}
});
我正在考虑使用正则表达式,所以你能帮我一起使用正则表达式来使用这个案例吗?或者如果你有另一个好主意来实现它,也欢迎你!
答案 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);
}
});