2012-09-26 3 views
2

누군가가 내 블로그 게시물의 제목을 마우스 오버 할 때 '더 읽기'텍스트를 추가하려고합니다. 나는 사용을 시도했다 $(".blogpost").mouseover(function(){ $(this).append(" - read more..."); }); 그러나 나는 더 많은 것을 읽는 제거하는 방법을 모른다. .. onmouseout..append onmouseout jQuery를 제거하십시오

+0

사용, 페이지로드에있는 모든 자세한 내용을보실 숨겨진합니다. 이 방법은 페이지가로드 될 때 가져 오는 것처럼 더 좋습니다. –

답변

4

추가 스팬에서 자세한 내용을 읽어 밖으로

추가 더 범위에 싸여 마우스에 그 범위를 제거합니다.

$(".blogpost").mouseover(function(){ $(this).append("<span id="read" - read more..."></span>); }); 

이 경우 읽은 ID와 함께 추가 된 스팬을 제거하십시오.

$(".blogpost").mouseout(function(){ $('#read').remove(); }); 
+0

정확히 내가 찾고 있었던 것. 고맙습니다. –

+0

당신은 환영합니다. – Adil

6

적절한 방법은 HTML에 이미 추가 텍스트가 있고 CSS : hover 속성을 사용하여 텍스트를 숨기고 표시하는 것입니다. 이를 위해 javascript를 사용하면 불필요한 수준의 복잡성과 취성이 추가됩니다.

+0

이것이 올바른 방법입니다. IMHO. 불필요한 DOM 조작이나 스크립팅이 필요한 시점은 없습니다. – Sampson

+0

화면 판독기 나 클라이언트를 자바 스크립트없이 사용할 때이 솔루션은 여전히 ​​작동 할 것입니다. 왜냐하면 "read more"링크가 처음부터 존재하기 때문입니다. – rsinuhe

+0

왜 내가 이것을 생각하지 않았습니까? –

1

당신도이 시도 할 수 있습니다 :

$(".blogpost").mouseout(function(){ 
    $(this).html(""); 
}); 

당신이 자식 요소가없는 가정. 당신이 자바 스크립트에서이 작업을 수행하려면

0

, 당신은 같은 것을 할 수 있습니다

데모 : 만 보여이 생성 된 후에는 숨길 것 http://jsfiddle.net/a3jzF/

$(".blogpost").mouseover(function() { 
    $(this).append("<div class='readmore'> - read more...</div>"); 
}).mouseout(function(){ 
    $('.readmore').remove();   
});​ 
0

. .hover()는 두 가지 기능을 수행합니다.

$(".blogpost").hover(function(){ 
    var $span = $(this).find('.more'); 

    if ($span.length) { 
    $span.show(); 
    } else { 
    $(this).append('<span class="more"> - read more...</span>'); 
    } 

}, function(){ 
    var $span = $(this).find('.more'); 
    $span.hide(); 
}); 

또는 사용 CSS를 전용 (이 낫다) : .show() 마우스 오버와로 마우스에 .hide()에

<div class="blostpost"> 
... 
<span class="more">read more</span> 
</div> 

.blogpost .more { display: none; } 
.blogpost:hover .more { display: block; }