使用jQuery为具有特定类的元素创建链接

时间:2009-08-24 14:34:37

标签: javascript jquery

如何使用从div内的文本构建的链接来包装属于特定类的每个元素?我的意思是我想转向:

<foo class="my-class>sometext</foo>

<a href="path/sometext" ><foo class="my-class>sometext</foo></a>

Url编码字符也很不错,但如果需要,现在可以忽略。

编辑:为了澄清,路径取决于元素中的文字

5 个答案:

答案 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() +"'>");
});