我是一名新手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>"
感谢您提供的任何帮助或建议。 麦克
答案 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 */ });
答案 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)