2012-03-27 10 views
0

Ich habe dieses Stück Code aus dem Datentabellen-Plugin bearbeitet, das einen Klick ermöglicht und einen anderen Balken mit Details aus dem angeklicktem Balken öffnet. Dieser Codeabschnitt ist der Ereignis-Listener zum Öffnen und Schließen. Wenn "Details" geöffnet sind, sollte der img Bilder/details_close.png sein und sie sind geschlossen. Der img sollte images/details_open.png sein und einen Tausch haben, wenn er geöffnet und geschlossen wird wenn er angeklickt wird. Was passiert, ist, dass es keinen Austausch gibt, wenn es offen oder geschlossen ist, ich bekomme nur die "details_open.png". Ich weiß nicht, ob ich das IMG-Tag nicht richtig auswähle oder was los ist.Bildwechsel mit Klick auf <tr>

Link zum Projekt: http://www2.kent.k12.wa.us/ksd/it/www/mobile/elementary.html

$('#example tbody').on('click', 'td', function (e) { 
     var myImage = $(this).find("img"); 
     var nTr = $(this).parents('tr')[0]; 
     if (oTable.fnIsOpen(nTr)) 
     { 
     /* This row is already open - close it */ 
     myImage.src = "images/details_open.png"; 
     oTable.fnClose(nTr); 
     } 
     else 
     { 
     /* Open this row */ 
     myImage.src = "images/details_close.png"; 
     oTable.fnOpen(nTr, fnFormatDetails(oTable, nTr), 'details'); 
     } 
    }); 

Antwort

0

So ist das, was ich mit dem Beitritt Antworten von euch gelandet und dabei einige Bearbeitung das ist, was das Problem gelöst.

$('#example tbody').on('click', 'tr', function (e) { 
     var myImage = $(this).find("#more"); 
      var nTr = $(this).closest('tr')[0]; 
      if (oTable.fnIsOpen(nTr)) 
      { 
      /* This row is already open - close it */ 
      myImage.attr("src","images/details_open.png"); 
      oTable.fnClose(nTr); 
      } 
      else 
      { 
      /* Open this row */ 
      myImage.attr("src","images/details_close.png"); 
      oTable.fnOpen(nTr, fnFormatDetails(oTable, nTr), 'details'); 
      } 
     }); 
+0

froh, dass Sie mit einer Lösung kamen. – davepreston

0

Try this:

var myImage = $(this).parent().find("img"); 

Aus Ihrer Beschreibung, Sie versuchen, ein Bild irgendwo in einem TR zu tauschen, aber Ihr Click-Handler ist auf allen die TDs. Um nach Bildern in der TR zu suchen, müssten Sie innerhalb des Elternteils des TD eine find() durchführen.

+0

Sie können das Projekt unter dem Link I aktualisiert überprüfen. Das hat übrigens nicht funktioniert. –

1

Zwei Teile:

Zuerst Ihr Bild Wähler ändern, weil Sie in der TD sind, nicht die TR

var myImage = $(this).parent().find("img"); 

Zweitens verwenden die attr() -Methode den Wert des src-Attribut zu ändern statt Einwirken auf src direkt

myImage.attr("src","images/details_open.png"); 
+0

Hat nicht funktioniert für mich das Bild noch nicht tauschen. :( –