这是我的问题的简化版。
我有两个按钮和一张图片。图片的代码大致如下:
<img class="onoff" src="image.jpg">
当我点击按钮一时,我希望图像被包裹在一个A标签中,如下所示
<a href="link.html">
<img class="onoff" src="image.jpg">
</a>
当我按下另一个按钮时,A标签应该被移除。
使用jQuery最简单的方法是什么?
虽然您已经得到了许多答案,但在我开始撰写本回答之前,它们中没有一个能正常工作。
它们没有考虑到您不应该使用多个<a>标签来包装<img>
。另外,如果未被包装,请不要尝试取消包装!这会破坏您的DOM。
此代码在包装或取消包装之前进行了验证:
$(function(){
var wrapped = false;
var original = $(".onoff");
$("#button1").click(function(){
if (!wrapped) {
wrapped = true;
$(".onoff").wrap("<a href=\"link.html\"></a>");
}
});
$("#button2").click(function(){
if (wrapped) {
wrapped = false;
$(".onoff").parent().replaceWith(original);
}
});
});
祝你好运!
将元素包装起来
$(".onoff").wrap("<a href='link.html'></a>");
$(".onoff").parent().replaceWith($(".onoff"));
尝试像这样:
$("img.onoff").wrap(
$("<a/>").attr("href", "link.html"));
也许直接使用jQuery的click
绑定在图片上会比将图片包装在一个锚点中更好。
你可以使用jQuery的wrap()函数。
代码如下:
<input type="button" id="button1" value="Wrap" />
<input type="button" id="button2" value="Unwrap" />
<img class="onoff" src="image.jpg" alt="" />
$(function() {
//wrap
$('#button1').click(function() {
$('.onoff').wrap('<a href="link.html"></a>');
//if you want to make sure multiple clicks won't add new <a> around it
//you could unbind this event like that:
//$(this).unbind( "click" )
});
//unwrap
$('#button2').click(function() {
$('.onoff').parent().each(function() { $(this.childNodes).insertBefore(this); }).remove();
//$(this).unbind( "click" )
});
});
button1
,再点击 button2
==> 就没有办法再次插入 <a>
标签了。 - Bruno Reiswrap
和Unwrap
函数,他想如何使用它-这不是我们的问题。如果他不想使用两次怎么办?我们不知道,所以我认为我们应该专注于任务。 - Piotr Rochala