So möchten Sie es ändern, wenn es angeklickt wird .. .Lass mich durch den ganzen Prozess gehen. Nehmen wir an, dass Ihre "External DOM-Objekt" ist eine Eingabe, wie ein select:
mit diesem HTML Lassen Sie beginnen:
<body>
<div>
<select id="test">
<option>Bob</option>
<option>Sam</option>
<option>Sue</option>
<option>Jen</option>
</select>
</div>
<table id="theTable">
<tr><td id="cellToChange">Bob</td><td>Sam</td></tr>
<tr><td>Sue</td><td>Jen</td></tr>
</table>
</body>
einige sehr grundlegende CSS:
#theTable td {
border:1px solid #555;
}
.activeCell {
background-color:#F00;
}
Und oben ein jQuery-Ereignis:
function highlightCell(useVal){
$("#theTable td").removeClass("activeCell")
.filter(":contains('"+useVal+"')").addClass("activeCell");
}
$(document).ready(function(){
$("#test").change(function(e){highlightCell($(this).val())});
});
Nun, wenn Sie etwas von der Auswahl holen, wird es automatisch eine Zelle mit dem passenden Text finden, so dass Sie den gesamten ID-basierten Prozess unterlaufen können. Natürlich, wenn Sie es so tun wollen, könnte man leicht das Skript ändern, indem er sagt IDs anstatt Werte zu verwenden
.filter("#"+useVal)
und stellen Sie sicher, dass der IDs in geeigneter Weise hinzuzufügen. Hoffe das hilft!
Hey @ Nick, einen Ereignishandler hinzufügen, die die erste td Elternteil findet [ 'var $ td = $ (this) .parents (‘ td: first ') '] erhält dann seine ID [' var id = $ td.attr (' id '); '] und auch die Klasse [' var class = $ td..attr (' class '); '] weil er will ein Klick-Element in den TD, um es auszulösen –
@Bob - Ich folge nicht, wo bekommen Sie das, eine andere Frage? Dieser sagt, er hat die ID des Elements :) Auch um ein Elternteil zu bekommen, können Sie '.closes ('td')' anstelle von '.parents ('td: first')' :) –
seinen letzten Satz: ' Ich möchte dies während des Klickereignisses eines anderen dom-Objekts tun können. Wie greife ich die ids des tds und ändere seine Klasse? '- Vielleicht lese ich es falsch, vielleicht meint er, benutze die tds ID, um die Klasse zu ändern ... –