如何使用从div内的文本构建的链接来包装属于特定类的每个元素?我的意思是我想转向:
<foo class="my-class>sometext</foo>
到
<a href="path/sometext" ><foo class="my-class>sometext</foo></a>
Url编码字符也很不错,但如果需要,现在可以忽略。
编辑:为了澄清,路径取决于元素中的文字
答案 0 :(得分:2)
使用jQuery.wrap()
表示简单案例:
$(".my-class").wrap("<a href='path/sometext'></a>");
处理内部文字:
$(".my-class").each(function() {
var txt = $(this).text();
var link = $("<a></a>").attr("href", "path/" + txt);
$(this).wrap(link[0]);
});
答案 1 :(得分:2)
$(".my-class").each(function(){
var thisText = $(this).text();
$(this).wrap("<a></a>").attr("href","path/"+thisText);
});
答案 2 :(得分:1)
你可以将它们包装在锚元素中,如下所示:
$(document).ready(function(){
$(".my-class").each(function(){
var hr="path/"+$(this).text();
$(this).wrap("<a href='"+hr+"'></a>");
});
});
如果你在同一页面本身打开链接,那么比修改dom以包含锚点内的元素更简单的方法是为元素定义css,使它们看起来像链接然后处理点击事件:
$(".my-class").click(function(){
window.location.href="path/"+$(this).text();
});
答案 3 :(得分:0)
应该这样做:
$('foo.my-class').each(function() {
var element = $(this);
var text = element.html(); // or .text() or .val()
element.wrap('<a href="path/' + text + '"></a>');
});
答案 4 :(得分:0)
$("foo.my-class").each(function(){
var foo = $(this);
foo.wrap("<a href='path/" + foo.Text() +"'>");
});