这是my other question更具体的问题。
我需要从这个表格行中提取部分..
<tr><td colspan="7"><a href="http://link/index.php?view=page&id=2961" target="_blank" title="title">atext1 atext2</a> - stuff 2 - <img src="img/icon_1.gif" class="icon" title="icon1" />12 - <img src="img/icon_2.gif" class="icon" title="icon2" />4 - <span title="long title"><img src="img/icon_3.gif" class="icon" /> stuff 5 </span></td></tr>
..所以我最终得到了一个像这样的数组(或对象):
var data = [
'id' = 2961,
'text' = 'stuff 2',
'link' = '<a href="http://link/index.php?view=page&id=2961" target="_blank" title="title">atext1</a>',
'icon1' = '<img src="img/icon_1.gif" class="icon" title="icon1" />12',
'icon2' = '<img src="img/icon_2.gif" class="icon" title="icon2" />4',
'icon3' = '<img src="img/icon_3.gif" class="icon" title="stuff 5: long title" />'
];
到目前为止,我只能获得身份证明。我尝试将td.html()值与var tdspilt = $('td', tr).html().split(' - ');
分开,但这会产生2个问题。 1)tdsplit array
上的jquery函数丢失,2).html()
将&
替换为&
var tr = 'above tr row';
var data = [];
data['id'] = $('td', tr).eq(0).find('a').attr('href').match(/view=page&id=([0-9]+)/)[1];
我怎样才能得到理想的结果?
答案 0 :(得分:2)
这是一个jsFiddle:http://jsfiddle.net/elektronikLexikon/tH6Yq/
该链接与预期的链接完全相同,即使它是红色的,但我不知道为什么。
jQuery.fn.outerHTML = function(s) {
return (s) ? this.before(s).remove() : jQuery("<p>").append(this.eq(0).clone()).html();
}
function escapeRegExpStr(str){
return str.replace(/[\[\]\\{}()+*?.$^|]/g, function(m){return '\\'+m;});
}
data['id'] = $('td', tr).eq(0).find('a').attr('href').match(/view=page&id=([0-9]+)/)[1];
data['link'] = $('a', tr).eq(0).outerHTML();
data['text'] = $('td', tr).eq(0).html().match(new RegExp(escapeRegExpStr(data['link'])+" - (.*?) - ", ''))[1];
data['link'] = data['link'].replace(escapeRegExpStr($('a', tr).eq(0).html()), $('a', tr).eq(0).html().match(/(.*?) /)[1]);
data['icon1'] = $('img', tr).eq(0).outerHTML();
data['icon1'] += $('td', tr).eq(0).html().match(new RegExp(escapeRegExpStr(data['icon1'])+"(.*?) - ", ''))[1];
data['icon2'] = $('img', tr).eq(1).outerHTML();
data['icon2'] += $('td', tr).eq(0).html().match(new RegExp(escapeRegExpStr(data['icon2'])+"(.*?) - ", ''))[1];
data['icon3'] = $('img', tr).eq(2).outerHTML();
icon3title = $.trim($('td', tr).eq(0).html().match(new RegExp(escapeRegExpStr(data['icon3'])+"(.*?)\s*<\/span>", ''))[1]) + ": " + $('span:last', tr).attr("title");
data['icon3'] = data['icon3'].replace(/>/, ' title="' + icon3title + '">');