我觉得它非常简单,但在星期一这真的很难。 ^^
我有一些像这样的HTML(它的修复 - 这里不能改变任何东西):
<a class="boxed" href="#foo" rel="type: 'box', image: '/media/images/theimage.jpg', param3: 'title here'">bar</a>
要使用var $(this).attr('rel');
轻松获取rel的值,但如何在此列表中获取图像或标题的值?肯定的分裂会起作用,但我认为有更好的方法......
答案 0 :(得分:1)
var rel = $('.boxed').attr('rel');
var arr = rel.split(',');
$.each(arr, function() {
alert(this.split(':').pop());
});
<强> JSFIDDLE DEMO 强>
答案 1 :(得分:0)
有很多方法可以做到这一点,这里只是使用正则表达式来匹配组。
var str = "type: 'box', image: '/media/images/theimage.jpg', param3: 'title here'";
var re = /\s?([^:]*):\s'([^']*)',?/;
var result;
var prop = {};
while ((result = re.exec(str)) !== null) {
prop[result[1]] = result[2];
str = str.replace(re,"");
}
console.log(prop);
使其成为JSON有效字符串并使用解析
的另一种方法var str = "type: 'box', image: '/media/images/theimage.jpg', param3: 'title here'";
var re1 = /(^|,\s)([^:]*)/g;
var re2 = /'/g;
var json = "{" + str.replace(re1,'$1"$2"').replace(re2,'"') + "}";
var prop = JSON.parse(json);
console.log(prop);
答案 2 :(得分:0)
Split在这里工作得很好......如果你想要一个关联数组:
var str = "type: 'box', image: '/media/images/theimage.jpg', param3: 'title here'";
var arr = str.split(',');
var answer = {};
for (var i = 0, len = arr.length; i < len; i++) {
var values = arr[i].split(':');
answer[values[0].trim()] = values[1].trim();
}
但@epascarello的正则表达式解决方案比这更好。