2013-09-06 9 views
5

Jestem nowo naukę jQuery i skryptu Java, obecnie jestem w obliczu problemu pokazując ukryty przycisk, mój HTML jesttrawers przycisk od rozpiętości 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;  
} 

Również próbowałem przy użyciu find, nextAll, najbliżej również nic nie działało, więc jak to działa.

Demo Here

Odpowiedz

2

Spróbuj

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

DEMO

+0

To jest naprawdę w połączeniu z bieżącym DOM. – Itay

+0

@ user2725407 Przestanie działać, gdy tylko nieznacznie zmienisz swój DOM. Powiedzmy, że dodasz obraz między tymi dwoma przęsłami, to rozwiązanie przestanie działać. – Itay

+0

Używane rozwiązanie .... akceptowane – user2725407

1

Używasz rodzeństwo, ale nie są one na tym samym pojemniku. Inna funkcja ruchu nie wykona tego zadania, ponieważ te dwa przyciski nie mają wspólnego pojemnika.

Wystarczy wyszukać go przez klasy

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

Jest to wskazane, że będziesz owinąć te dwa przyciski ze wspólnym pojemniku.

Oto przykład

<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

To nie powieść, jeśli PO ma wielokrotność tych elementów i chce włączyć tylko ten, który związany jest z przycisk usuwania. Nie używaj również tej linii 'var $ this = $ (this);'. – insertusernamehere

+0

Nie ma wspólnego pojemnika ... Inne rozwiązania z .parent() i .next() itp. Byłyby naprawdę sprzężone z DOM – Itay

+0

@ user2725407 Więc umieść je na wspólnym pojemniku. Zobacz moją aktualizację – Itay

Powiązane problemy