【问题标题】:Jquery CSS show current div on click in another cotainerJquery CSS 在另一个容器中单击时显示当前 div
【发布时间】:2018-02-18 15:19:39
【问题描述】:

我有这个 html。

    <div class="row">
        <div class="col-lg-6" style="float:left">
        <div class="col-lg-3">
        <div id='rm-a'>
            <div class="room-canvas">
            <div class="tp1-rm-a" style='background-image:url(http://iaz.example.com/Template1.jpg);'>
            <div class="pimg" style=' background-image:url(<?php echo "http://iaz.example.com/pub/media/catalog/product".$this->getProduct(); ?>);'>rm-1</div>
            </div></div></div>
        
            <div id='rm-b'>
            <div class="room-canvas">
            <div class="tp1-rm-a" style='background-image:url(http://iaz.example.com/Template1.jpg);'>
            <div class="pimg" style="background-image:url(<?php echo 'http://iaz.example.com/pub/media/catalog/product'.$this->getProduct(); ?>);">rm-b</div>
            </div></div></div>
                                
            <div id='rm-c'>
            <div class="room-canvas">
            <div class="tp1-rm-a" style='background-image:url(http://iaz.example.com/Template1.jpg);'>
            <div class="pimg" style="background-image:url(<?php echo 'http://iaz.example.com/pub/media/catalog/product'.$this->getProduct(); ?>);">rm-c</div>
            </div></div></div>                            
       
    
         </div>
        <div class="col-lg-6"></div>  //container
        </div>

我希望实现的是: div 类 rm-arm-brm-c 充当更大图像容器的缩略图锚。 所以当点击 div rm-a 时,

相同的 div 将被复制到容器中 &lt;div class="col-lg-6"&gt;&lt;/div&gt;

当点击rm-b 时,它将替换容器中的rm-b

我试了一下,还在https://www.w3schools.com/howto/howto_js_tab_img_gallery.asp找到了一个例子

但它处理图像和 src,而在我的示例中,它都是带有背景图像的 div,不知何故无法正确处理。

我在 JSfiddle 的代码链接是 - https://jsfiddle.net/yoc9qvrb/12/

【问题讨论】:

  • 您使用的是 bootstrap-3 对吗??

标签: javascript jquery html css


【解决方案1】:

您可以使用clone()复制div的内容,使用html()可以更新目标div中的内容。

$('#rm-a,#rm-b,#rm-c').click(function(){
  var target = $(this).parent().next();
  target.html('');
  var copiedDiv = $(this).clone();
  target.html(copiedDiv);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row">
    <div class="col-lg-6" style="float:left">
    <div class="col-lg-3">
        <div id='rm-a'>
        <div class="room-canvas">
        <div class="tp1-rm-a" style='background-image:url(http://iaz.example.com/Template1.jpg);'>
        <div class="pimg" style=' background-image:url(<?php echo "http://iaz.example.com/pub/media/catalog/product".$this->getProduct(); ?>);'>rm-1</div>
        </div></div></div>

        <div id='rm-b'>
        <div class="room-canvas">
        <div class="tp1-rm-a" style='background-image:url(http://iaz.example.com/Template1.jpg);'>
        <div class="pimg" style="background-image:url(<?php echo 'http://iaz.cubereach.com/pub/media/catalog/product'.$this->getProduct(); ?>);">rm-b</div>
        </div></div></div>

        <div id='rm-c'>
        <div class="room-canvas">
        <div class="tp1-rm-a" style='background-image:url(http://iaz.example.com/Template1.jpg);'>
        <div class="pimg" style="background-image:url(<?php echo 'http://iaz.cubereach.com/pub/media/catalog/product'.$this->getProduct(); ?>);">rm-c</div>
        </div></div></div>                            


     </div>
    <div class="col-lg-6"></div>  //container
    </div>
<div class="row">
    <div class="col-lg-6" style="float:left">
    <div class="col-lg-3">
    <div id='rm-a'>
        <div class="room-canvas">
        <div class="tp1-rm-a" style='background-image:url(http://iaz.example.com/Template1.jpg);'>
        <div class="pimg" style=' background-image:url(<?php echo "http://iaz.example.com/pub/media/catalog/product".$this->getProduct(); ?>);'>rm-1</div>
        </div></div></div>

        <div id='rm-b'>
        <div class="room-canvas">
        <div class="tp1-rm-a" style='background-image:url(http://iaz.example.com/Template1.jpg);'>
        <div class="pimg" style="background-image:url(<?php echo 'http://iaz.cubereach.com/pub/media/catalog/product'.$this->getProduct(); ?>);">rm-b</div>
        </div></div></div>

        <div id='rm-c'>
        <div class="room-canvas">
        <div class="tp1-rm-a" style='background-image:url(http://iaz.example.com/Template1.jpg);'>
        <div class="pimg" style="background-image:url(<?php echo 'http://iaz.cubereach.com/pub/media/catalog/product'.$this->getProduct(); ?>);">rm-c</div>
        </div></div></div>                            


     </div>
    <div class="col-lg-6"></div>  //container
    </div>
<div class="row">
    <div class="col-lg-6" style="float:left">
    <div class="col-lg-3">
        <div id='rm-a'>
        <div class="room-canvas">
        <div class="tp1-rm-a" style='background-image:url(http://iaz.example.com/Template1.jpg);'>
        <div class="pimg" style=' background-image:url(<?php echo "http://iaz.example.com/pub/media/catalog/product".$this->getProduct(); ?>);'>rm-1</div>
        </div></div></div>

        <div id='rm-b'>
        <div class="room-canvas">
        <div class="tp1-rm-a" style='background-image:url(http://iaz.example.com/Template1.jpg);'>
        <div class="pimg" style="background-image:url(<?php echo 'http://iaz.cubereach.com/pub/media/catalog/product'.$this->getProduct(); ?>);">rm-b</div>
        </div></div></div>

        <div id='rm-c'>
        <div class="room-canvas">
        <div class="tp1-rm-a" style='background-image:url(http://iaz.example.com/Template1.jpg);'>
        <div class="pimg" style="background-image:url(<?php echo 'http://iaz.cubereach.com/pub/media/catalog/product'.$this->getProduct(); ?>);">rm-c</div>
        </div></div></div>                            


     </div>
    <div class="col-lg-6"></div>  //container
    </div>

【讨论】:

  • 我们是否也需要在目标容器中保留相同的代码?是否无法克隆源 div,被点击到目标容器 div。?
  • 代码正在克隆源div并更新目标div。
  • 我已经用你建议的代码创建了一个 JSfiddle,但是如果我更改 Css 类 .canvas{min-width:300px;} 它可以在第 2 和第 3 个 div 上工作,但不能在第一个 div 上工作。如果我删除最小宽度。点击它只显示第三个div,无论我点击哪里。你能看看吗?链接 - jsfiddle.net/yoc9qvrb/12
  • 您的班级 .room-canvas::after 正在与 html 混淆,这就是您没有得到想要的结果的原因。删除它,代码就可以工作了。
  • 谢谢。我已经确定了这一点。是的,这是导致问题的原因。我接受了答案。再次感谢您。
猜你喜欢
  • 2016-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-15
  • 2016-11-27
  • 2012-07-30
相关资源
最近更新 更多