У меня хорошая таблица
<table id="#table1">
<tr>
<td class="column1">foo1</td>
<td class="column2">#bar1</td>
</tr>
<tr>
<td class="column1">foo2</td>
<td class="column2">#bar2</td>
</tr>
</table>
Я хочу выбрать второй столбец и заменить содержимое ссылками, используя значения в td для href. Таким образом, конечный результат должен быть:
<table id="#table1">
<tr>
<td class="column1">foo1</td>
<td class="column2"><a href="#bar1">link</a></td>
</tr>
<tr>
<td class="column1">foo2</td>
<td class="column2"><a href="#bar2">link</a></td>
</tr>
</table>
Поэтому я выбираю td и обертываю его приятным href.
$("td.column2").wrapInner(function() {
return "<a href='" + this.nodeValue + "'></a>";
});
Это, однако, создает следующее:
<table id="#table1">
<tr>
<td class="column1">foo1</td>
<td class="column2"><a href="null">#bar1</a></td>
</tr>
<tr>
<td class="column1">foo2</td>
<td class="column2"><a href="null">#bar2</a></td>
</tr>
</table>
Что я делаю не так? Я, вероятно, не замечаю ничего смешного, но это был долгий день. Спасибо за вашу помощь!
$("td.column2").html(function() {
return "<a href='" + this.innerHTML + "'>Link</a>";
});
или
если вы хотите, чтобы текст ссылки был таким же, как и предыдущий текст
$("td.column2").html(function() {
return "<a href='" + this.innerHTML + "'>"+this.innerHTML+" </a>";
});
Рекомендации
использование
$("td.column2").html(function() {
var self = $(this);
return $('<a>',{
href: self.text(),
text: 'link'
});
});
Демо на http://jsfiddle.net/V4dFj/
Используйте jQuery, чтобы получить значение вашего td... (это просто более удобно использовать jQuery, когда вы можете), который является его текстом:
Первая часть ответа: замените this.nodeValue
на $(this).text()
.
Второй ответ: я думаю, что вы используете wrapInner()
неправильно. См. Http://api.jquery.com/wrapInner/ Что вы хотите сделать, это заменить внутренний контент вашего td. Поэтому вы должны использовать $('td.column2').html(function() {//etc }) ;
Я бы предложил:
$('td.column2').html(function(i,h){
var text = $(this).text();
return '<a href="' + text + '">' + text + '</a>';
});
http://jsfiddle.net/kasperfish/p68pH/
$(function() {
$("td.column2").wrapInner(function() {
return "<a href='" + $(this).html() + "'></a>";
});
});