2014-02-06 2 views
1

"이"id/img의 공중에 "빠른 구매"아이콘을 표시하려고합니다. 이 빠른 구매 아이콘이 모든 이미지에 표시되는 것을 원하지 않습니다. 그냥 위에 올려 놓은 이미지 만 표시하면됩니다.jQuery. 이것을 호버에 적용하십시오.

<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 ID 다음에 이미지를 복제한다 "QuickBuyProdBox"

jQuery를 :

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

HTML

지금까지 나는이 있습니다 . 나는 여기에 클론의 사용을 오해했다고 생각한다! 또한이 기능은 마우스를 올리거나 마우스를 올리면 실행되며, 사용자가 마우스를 올리면 작동하고 사용자가 마우스를 가리면 사라집니다.

내가해야 할 일 : div id "comp-imageprince"의 맨 위 또는 위에 "div"라는 제목의 아이디 "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(); 
      }); 
     }); 
+0

"후"여기 더 이해가되지 않을까요? 예 : $ ('# bla'). 이후 ('

'); – user5623896726

+0

'img'와'# main_cat_prods'는 무엇인가, 왜 hover' 이벤트를 사용하고 있습니까 (btw하지 말아야 할 것입니다), 이미 그 요소가 있습니다. 그리고 여러분은 단지 visiblity를 토글하려고하고 있습니다. 그것을 삽입? 복제 할 대상은 무엇입니까? 이것의 어느 것도 나에게 어떤 의미가 없어요! – adeneo

+0

죄송합니다. 질문에 대해서는 잘 말하지 않았습니다. loc_ta에서 main_cat_prods를 가져옵니다. 이미지가 포함되어 있습니다. 내 페이지에는 메인 main_cat_prods가 있습니다. 사용자가이 main_cat_prods 중 하나를 가리키면 div가 main_cat_prods의 맨 위 또는 뒤에 표시되기를 원합니다. 그들 모두는 아닙니다. – Myles

답변

1

이 안된입니다,하지만 ...

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

터치 스크린 장치에서 호버 이벤트가 올바르게 실행되지 않을 수도 있습니다. 이 경우 자신의 관심사인지 확실하지 않지만 염두에 두어야 할 가치가 있습니다.

+0

이것은 작동하지 않는 것 같습니다./나는 질문을 다시하고이 질문을 닫을 것입니다. – Myles

1

사용 mouseenter 대신 호버 :

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

이것은 작동하지 않는 것 같습니다. "테스트"후에 모든 제품을 복제합니다. 이것은 틀린 길이다. 나는 맨 위 또는 후에 (복제품이 아니라 내 실수였다) 메인 고양이 div를 테스트 해보고 싶지만,이 메인 고양이 div (홀드 된 고양이) 만 전부는 아니야. – Myles

+0

업데이트보기 ..... –

+0

이것은 단지 내 제품을 완전히 제거합니다! 어쨌든 남자 고마워. – Myles

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; 
} 
+0

Localeta를 사용하고 있기 때문에 제품의 HTML에 액세스 할 수 없습니다. jQuery를 사용하여이 작업을 수행해야한다. 그래도 고마워! – Myles

+0

@Myles 업데이트했습니다. 이제 부모 노드와 함께 작동합니다. ... –

+0

안녕하세요 이반, 이건이 인스턴스에 대한 수용 가능한 대답이 아니며 작동하지만 Locaterta에서 만든 div가 모두 동일한 ID를 가지고 있기 때문에 본질적으로 쓸모가 없습니다. 또한 jQuery를 사용하여 클릭 할 때 라이트 박스를 발사하는 등 기타 많은 작업이 필요합니다. CSS를 사용하여 다시 수행 할 수 있지만 CSS가있는 JS 라이트 박스에 sku (제품 ID)를 전달하려고하면 행운을 빕니다. 건배 – Myles

관련 문제