jQuery。暂停这个

时间:2014-02-06 09:39:02

标签: jquery this

我试图在“this”id / img悬停时显示“快速购买”图标。我不希望这个快速购买图标显示在所有图像上,只是悬浮在图像上的图像。

到目前为止,我有这个:

jQuery的:

jQuery('#main_cat_prods').delegate('img', 'hover', function(){
   jQuery("#QuickBuyProdBox" ).append($(this).clone());
 });

HTML:

<div id="comp-imageprince" class="image" style="height: 260px;"> <table cellspacing="0" cellpadding="0" border="0"> <tbody> <tr> <td><a href="/dresses/mandy-strappy-bandeau-layered-bodycon-dress/invt/azz50430"> <div class="overDIV" style="display:none;position: absolute;right: 5px;"></div>

<div id="QuickBuyProdBox"><p>test</p></div>

然而,这是完全错误的,只是在div“QuickBuyProdBox”之后克隆图像。我想我在这里误解了克隆的使用!此外,这是在悬停和悬停时触发,我只需要在用户悬停时工作,然后在用户徘徊时消失。

我需要它做什么:在div id“comp-imageprince”之上或之后悬停show div id“QuickBuyProdBox”。然后,一旦用户从div中移除光标,我需要div再次隐藏。

有什么建议吗?

非常感谢, 迈尔斯

使用以下解决方案解决:

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();
            });
        });

3 个答案:

答案 0 :(得分:1)

使用mouseenter而不是hover:

jQuery('#main_cat_prods').delegate('img', 'mouseenter mouseleave', function(event){
   jQuery(this).toggle( event.type === 'mouseenter' );   
   jQuery("#QuickBuyProdBox" ).append($(this).clone());
 });

答案 1 :(得分:1)

这是未经测试的,但是......

jQuery('#main_cat_prods img').hover {
    function() {
        jQuery( this ).append( jQuery('#QuickBuyProdBox').clone());
     }, function() {
        jQuery( this ).find('#QuickBuyProdBox').remove();
     }
 });

但是,悬停事件可能无法在触摸屏设备上正确触发。在这种情况下,不确定这是否属于你的问题,但值得记住。

答案 2 :(得分:1)

尝试使用CSS。它非常简单,更可靠/更快。

在这里查看我的示例: http://jsfiddle.net/rzVjW/3/

通用HTML:

<div class="buy-box"></div>
<input type="button" class="buy-button" value="My Button"/>

通用CSS:

.buy-box{
    position: relative;
    float: left;
    width: 100px;
    height: 50px;
    background-color: #FF99D5;
    margin: 5px;
}

.buy-box + .buy-button{
    visibility: hidden;
    position: relative;
    bottom: 0;
    left: 0;
}

.buy-box:hover + .buy-button{
    visibility: visible;
}