使用jQuery在另一个div上显示div

时间:2014-02-06 10:06:41

标签: jquery html

我有一个产品页面,填充了我的Locayta。它填充了包含图像的div。让我们称这个div为" a"。有x个数量的产品,因此有x个数量的div" a"&s;都具有相同的ID。

使用jQuery,我想要一个div" b"出现在任何一个div" a"徘徊,然后为div" b"当悬停停止时离开。

澄清一下,由于有很多div" a",我需要瞄准"这个" div a,将鼠标悬停在它上面的那个,并移动现有的div" b"除此之外" a"或创建一个div" b"除此之外" a"。

到目前为止,我已经尝试过.after,.insertAfter和.prop但不确定哪种情况最适合这种情况

我考虑过的一种方法,但是对代码有帮助,就是让这两个div都是这样的:

<div id="a"><img src="img.jpg"></div>

<div id="b" style="display:none;"><img src="img2.jpg"></div>

Then when the user hovers over div "a", div "b" should sit on top of div "a" and display:none should be removed.  Thoughts?

我之前打开了这个问题,其中包含了我的真实代码,但这只会让事情变得混乱。

非常感谢任何建议!

编辑:

使用以下解决方案解决:

jQuery('#main_cat_prods').delegate('img', 'mouseenter', function(){
            var $skuID = this.src.match(/[a-z][a-z][a-z]\d\d\d\d\d/)[0];

        if ( !jQuery('#QuickBuyProdBox').length ) {
            jQuery(this).closest('.image').prepend('<div id="QuickBuyProdBox" style="width:50px; height:50px; position:absolute; background-color:red; cursor:pointer;">');
        };
            jQuery("#QuickBuyProdBox").click(function(){
                jQuery.event.trigger('lightbox', $skuID);
            });
            jQuery('.image, #QuickBuyProdBox').mouseleave(function(){
            jQuery('#QuickBuyProdBox').remove();
        });
    });

5 个答案:

答案 0 :(得分:2)

演示: JS Fiddle

尝试以下代码示例:

CSS:

<style type="text/css">
    .container {
        background-color: #bababa;
        width: 200px;
        height: 30px;
    }

    .tooltip {
        position: absolute;
        background-color: #333;
        border: 1px solid orange;
        width: 50px;
        height: 30px;
    }
</style>

HTML:

<div id="a" class="container">
    <img src="img.jpg">
</div><br/><br/>
<div id="a" class="container">
    <img src="img.jpg">
</div><br/><br/>
<div id="a" class="container">
    <img src="img.jpg">
</div><br/><br/>
<div id="a" class="container">
    <img src="img.jpg">
</div>
<div id="b" style="display: none;" class="tooltip">
    <img src="img2.jpg">
</div>

JAVASCRIPT:

<script type="text/javascript" language="javascript">
    $('.container').hover(function (evt) {
        $("#b").show();
        $("#b").css({
            top: evt.pageY,
            left: evt.pageX
        });
    });

    $('.container').mouseout(function()
    {
        $("#b").hide();
    });
</script>

答案 1 :(得分:2)

看到这个小提琴:http://jsfiddle.net/JfEPA/

$('.product').hover(function(){

    $('#target').css({top:$(this).offset().top, left: $(this).offset().left});
})

您已指定使用id s作为div。您不应该使用相同的ID,而是使用相同的类。

答案 2 :(得分:2)

假设ab是类,而不是ID(因为ID在页面上应该是唯一的):

$('.a').hover(function() {
    var buttonCopy = $('.b').clone();
    $(this).find('img').after(buttonCopy);
    buttonCopy.show();
},
function() {
    $(this).find('.b').remove();
});

Working Fiddle

如果您绝对必须使用ID(例如,将他悬停在#parentContainer > div上),您应该可以将其更改为工作表单,但它会非常hacky而且我' d建议不要这样做。 Here's an example of how to handle it.

$('#wrapper > div').hover(function() {
    var buttonCopy = $('#b').clone();
    $(this).find('img').after(buttonCopy);
    buttonCopy.show();
},
function() {
    $(this).find('#b').remove();
});

如果您的CMS在页面上吐出相同的ID,我建议您更改模板。

答案 3 :(得分:0)

你可以这样做:

$('.a-class').on('mouseenter', function() {
 $('.b-class').show();
});

答案 4 :(得分:-1)

如果你将div b放入a中,那么你可以通过以下方式解决问题:

.a-class:hover .b-class {display:block}