用另一个div jQuery的内容替换Div的内容

时间:2013-02-04 10:56:55

标签: javascript jquery css

我想通过单击图像将div的内容替换为另一个div(使用css隐藏)的内容。然而,使用这里建议的一些方法我似乎无法使其工作。

我的代码如下:

HTML

<h3>Recent Callaborations</h3>
    <div id="collaborations">
    <img class="rec1" src="http://domain.com/michaelscott/wp-content/uploads/2013/02/url.png"/>
    <div id="rec1">Some image caption that is hidden now and that will replace what is in the rec div below</div>
 </div>

<div id="rec-box" class="rec">
    this is the content that is to be replaced
</div>

JS

jQuery(document).ready(function() {
        jQuery(".rec1").click(function(event) {
            event.preventDefault() 
            jQuery('#rec-box').html($(this).next('#rec1')[0].outerHTML); 
          });
        });

CSS

#collaborations {
    width: 100%;    
    margin:0 0 10px 0;
    padding:0;
}

#collaborations img {
    display:inline-block;
}
.rec {
    background: #EDEDED;
    box-sizing: border-box;
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    padding: 10px;
}
#rec1, #rec2, #rec3, #rec4 {
    display:none;
}

5 个答案:

答案 0 :(得分:4)

您只需设置正确html()的{​​{1}}即可。试试这个:

div

答案 1 :(得分:1)

jQuery(document).ready(function() {
    jQuery(".rec1").click(function(event) {
        event.preventDefault() 
        jQuery('#rec-box').html(jQuery("#rec1").html()); 
    });
});

答案 2 :(得分:1)

您的原始代码似乎失败了,因为您使用outerHTML属性(而不是innerHTML)捕获整个隐藏元素,而不仅仅是其内容。这意味着新复制的内容仍然具有<div id='rec1'...>,并且仍然是由于css规则而隐藏的。

jQuery的html方法可以获取和设置innerHTML,因此这是正确的方法。

$(document).ready(function () {
  $(".rec1").click(function (event) {
    event.preventDefault();
    $('#rec-box').html($('#rec1').html()); //replaces with contents of #rec1
  });
});

答案 3 :(得分:1)

我更喜欢以下解决方案:)希望有所帮助

<强> HTML

<h3>Recent Callaborations</h3>
<div id="collaborations">
    <a href="#rec1" class="switchContent"><img class="rec1" src="http://cmagics.eu/michaelscott/wp-content/uploads/2013/02/url.png"/></a>
    <div id="rec1">Some image caption that is hidden now and that will replace what is in the rec div below</div>
 </div>

<div id="rec-box" class="rec">
    this is the content that is to be replaced
</div>

<强>的JavaScript

$(document).ready(function() {

    switchContent   =   function(ev) {
        var el  =   $($(this).attr('href'));
        if(el.length == 1) {
            $('#rec-box').html(el.html());
        }
        ev.preventDefault();
    };

    $('.switchContent').on('click',switchContent);
});

答案 4 :(得分:1)

您需要获得$("#rec").contents().clone()

.append()之后,$('#rect-box')需要.empty() {/ 1}}

jQuery(function($) {
    $(".rec1").on('click',function(event) {
        event.preventDefault();
        $('#rec-box').empty().append(($('#rec1').contents().clone());
    });
});