将<div>更改为<a></a> </div>

时间:2010-10-25 14:40:29

标签: jquery

我是一名新手jQuery学生,需要一些帮助。 Jquery是否可以动态地将<div>更改为<a>,具体取决于<div>的类别?我搜索过,找不到使用.add(),. append()或.html()

这样做的任何引用

例如我想改变这个:

"<div class="item"><div class="caption">pic1</div></div>"

到此:

"<a class="item" href="#"><div class="caption">pic1</div></a>"

感谢您提供的任何帮助或建议。 麦克

3 个答案:

答案 0 :(得分:6)

您可以尝试jQuery.replaceWith()。您可能希望将其与jQuery.get()结合使用。

另一个选择是使用操作函数来获取标记的子元素,解开标记,然后用所需的标记包装子元素。

jQuery('.item').children().unwrap().wrap('<a></a>');

然而,正如Andy在评论中指出的那样,div标签内不能存在a。这不是语义上正确的HTML。你试图从中获得什么好处?


编辑:我在更新答案时看到你改变了问题。看起来你做这样的事情会更好(Silkster提到的不同版本):

jQuery(document).delegate('.item', 'click', function (e) { /* Do something here */ });

jQuery.delegate()

答案 1 :(得分:1)

所以,是的,有可能......你应该能够按类使用选择器:

$('div.item')

...使用replaceWith()进行更新,如:

$('div.item').replaceWith('<a class='item'></a>');

...然后对于内容,您可以获取内容并稍后使用每个函数进行更新,如:

$('div.item').each(function (){
     var divContent = $(this).html();
     $(this).replaceWith('<a class='item'></a>').html(divContent);
});

答案 2 :(得分:0)

我建议您查看jQuery wrapunwrap 他们应该能够做你喜欢的事。