2012-10-14 20 views
5

Mam link, który publikuje niektóre dane do kontrolera. Działa dobrze i aktualizuje dane. Ale chcę zmienić css div jednostki nadrzędnej, ale tak się nie dzieje. Próbowałem wielu wariacji, ale muszę robić coś głupiego.jquery rodzice/najbliżsi nie pracujący

Kod jest poniżej

Widok:

@foreach (var item in Model) 
{ 
    <div class="added-property-excerpt"> 
     ... 
     <div class="added-property-links"> 
     ... 
     @if (!item.IsPropertyDisabled) { 
       @Html.ActionLink("Take off the Market" , "Disable", "Property", new { id = item.PropertyId }, new { id ="disable-link" }) 
      } 
      else { 
       @Html.ActionLink("Bring on the Market" , "Enable", "Property", new { id = item.PropertyId }, new { id ="enable-link" }) 
      } 
     </div> 
    </div> 
} 

JQuery

<script> 
    $(function() { 
     $('a#disable-link').click(function (e) { 
      $('.added-property-links').text('loading...'); 
      $.ajax({ 
       url: this.href, 
       dataType: "text json", 
       type: "POST", 
       data: {}, 
       success: function (data, textStatus) { } 
      }); 
      $(this).closest('.added-property-excerpt').css("background", "red"); 
      // $(this).parent('.added-property-excerpt').css("background", "red"); 
      e.preventDefault(); 
     }); 
    }); 
</script> 
+3

Czy możesz wysłać próbkę wyeksportowanego HTML? –

+1

Czy powiązałeś rodziców() zamiast rodzica() –

+0

Generujesz nieprawidłowy znacznik. Identyfikatory muszą być unikalne. – undefined

Odpowiedz

4

Spróbuj

$(function() { 
    $('a#disable-link').click(function (e){ 
     var parentDiv=$(this).closest('.added-property-excerpt'); 
     $('.added-property-links').text('loading...'); 
     parentDiv.css("background", "red"); 
     $.ajax({...}); 
     e.preventDefault(); 
    }); 
}); 

zobaczyć różnicę w a working example i non-working example.

+3

działa idealnie ... dzięki. Ale czy możesz mi powiedzieć, dlaczego poprzedni kod nie działał? – Tripping

+0

Serdecznie zapraszamy :-) –

+2

@Tripping, myślę, że '$ ('. Added-property-links'). Text ('loading ...');' linia usuwa tag 'link/' z domeny i '$ (this)' nie był w stanie odnosić się do niego po tej linii. –