2013-06-19 89 views
0

我有一個顯示列表的頁面,用戶可以添加和刪除項目。jQuery顯示/隱藏特定的div <li></li>徘徊時

在每個<li></li>上,都有一個與該項目匹配的小刪除按鈕。

現在,刪除按鈕僅在用戶懸停列表時顯示。 我想要做的是隻顯示一個刪除按鈕,當用戶懸停在特定項目上。

這是我到目前爲止有:

$(document).ready(function() { 
    $(".delete_update").hide(); 
    $('.cell').hover(function(){ 
     $(".delete_update").show(); 

     $('.cell').mouseout(function(){ 
      $(".delete_update").hide(); 
     }); 
    }); 
}); 


<li class="cell" id="post<?php echo $postid ?>"> 
    <div id="update<?php echo $postid ?>"> 
     <?php echo $post ?> 
    </div> 
    <div id="eraser<?php echo $postid ?>"> 
     <a href="#" id="<?php echo $postid ?>" class="delete_update">Delete !</a> 
    </div> 
</li> 

,我打算給變量添加到jQuery來包含每個單元的「ID」,某事像:

var element = $(this); 
var I = element.attr("id"); 
$('.cell' + I).hover(function() { 
    $(".delete_update").show(); 
}); 

但這種止跌沒有工作。

任何想法?

回答

3

試試這個:

$(function(){ 
    $('.cell').hover(function(){ //Hover takes 2 callbacks one for mouseenter and one for mouseleave 
      $(this).find('.delete_update').show(); //show the button which is inside the current li hovered 
    }, 
    function(){ 
     $(this).find('.delete_update').hide(); //hide the button which is inside the current li hovered 

    }); 
}); 

或者只是使用撥動

$(function(){ 
     $('.cell').hover(function(){ // Same callback will be executed if only one is mentioned, on mouseeneter and mouse leave 
       $(this).find('.delete_update').toggle(); //toggle the button visibility which is inside the current li hovered 
     } 
    }); 
+0

確保你隱藏所有預先按鈕。使用CSS或使用.hide() – PSL

+0

工程就像一個魅力! –

2

使用上下文選擇

$(document).ready(function(){ 
    $(".delete_update").hide(); 
    $('.cell').hover(function(){ 
     $(".delete_update", this).show(); 
    }, function(){ 
     $(".delete_update", this).hide(); 
    }); 
}); 

$(document).ready(function(){ 
    $(".delete_update").hide(); 
    $('.cell').hover(function(){ 
     $(".delete_update", this).toggle(); 
    }); 
}); 
1

變化:

$(".delete_update").show(); 

$(this).find(".delete_update").show(); 

$(".delete_update",this).show(); 
3

無法使用CSS!

.delete_update 
{ 
    display:none; 
} 

.cell:hover .delete_update 
{ 
    display:block; 
} 

看到這個小提琴:http://jsfiddle.net/htqkt/1/

當然,你不明白的jquery的花哨trasitioning,但你coulld使用CSS過渡,以實現在現代瀏覽器同樣的事情

+0

+1爲開箱即用的解決方案.. :)看到OPs代碼中的jQuery所有人都在思考jQuery的線.. – PSL