2013-09-06 26 views
5

Tôi mới học jQuery và kịch bản java, hiện tôi đang phải đối mặt với một vấn đề trong hiển thị nút ẩn, html của tôi lànút traverse từ khoảng để span

<span style="float:left;padding-right:10px"> 
    <input type="button" value="image" class="delete" /> 
    <a href="/media/image"><img src="/media/image" /></a> 
</span> 
<span style="float: left; padding-top: 5px;"> 
    <a href="/media/image"> 
     <button type="submit" class="delete_media">Delete</button> 
    </a> 
</span> 

Jquery:

$(".delete").click(function(){   
var $this = $(this); 
$this.siblings(".delete_media").toggle();    
}); 

css :

.delete_media {  
    display:none; 
    float: right; 
    height: 25px; 
    width: 60px; 
    -moz-border-radius: 10px; 
    border-radius:10px;  
} 

Ngoài ra tôi đã thử sử dụng tìm, tiếp theoTất cả, gần nhất cũng không có tác dụng nào để thực hiện công việc này.

Demo Here

Trả lời

2

Hãy thử điều này

$this.closest('span').next().find(".delete_media").toggle(); 

DEMO

+0

Điều này thực sự được kết hợp với DOM hiện tại. – Itay

+0

@ user2725407 Nó sẽ ngừng hoạt động vào thời điểm bạn sẽ thay đổi chút ít DOM của mình. Giả sử bạn sẽ thêm hình ảnh giữa hai nhịp này, giải pháp này sẽ ngừng hoạt động – Itay

+0

Đã sử dụng giải pháp của bạn .... được chấp nhận – user2725407

1

Bạn đang sử dụng anh chị em nhưng chúng không có cùng một nơi chứa. Chức năng duyệt ngang khác cũng không thực hiện được công việc vì hai nút này không có vùng chứa chung.

Chỉ cần tìm kiếm nó bằng lớp

$(".delete").click(function(){   
    var $this = $(this); 
    $(".delete_media").toggle();    
}); 

Đó là khuyến khích rằng bạn sẽ quấn hai nút với một container thông thường.

Dưới đây là một ví dụ

<div data-action="delete"> 
    <span style="float:left;padding-right:10px"> 
     <input type="button" value="image" class="delete" /> 
     <a href="/media/image"><img src="/media/image" /></a> 
    </span> 
    <span style="float: left; padding-top: 5px;"> 
     <a href="/media/image"> 
      <button type="submit" class="delete_media">Delete</button> 
     </a> 
    </span> 
</div> 

$(".delete").click(function(){   
    var $this = $(this); 
    $this.closest("div[data-action='delete']") 
          .find(".delete_media").toggle();    
}); 
+0

này sẽ thất bại nếu OP có nhiều những yếu tố và muốn chuyển đổi chỉ một trong đó có liên quan đến nút xóa. Bạn cũng không sử dụng dòng này 'var $ this = $ (this);'. – insertusernamehere

+0

Không có thùng chứa thông thường ... Các giải pháp khác với .parent() và .next() vv sẽ thực sự được kết hợp với DOM – Itay

+0

@ user2725407 Vì vậy, hãy đặt chúng trên một thùng chứa chung. Xem cập nhật của tôi – Itay

Các vấn đề liên quan