2009-06-13 10 views
0

ich eine PHP-Klasse mit einer statischen Funktion haben:anonyme Funktion von PHP übergeben, und spezifische `this` Referenz

<? echo view::getUserSelector() ?> 

Welche Ausgänge:

<div id="user_selector"> 
    <div class="user"> 
     <h1>Username1</h1> 
     <a href="javascript:selectUser(this);">select</a> 
    </div> 
    <div class="user"> 
     <h1>Username2</h1> 
     <a href="javascript:selectUser(this);">select</a> 
    </div> 
</div> 

Was muss ich tun müssen, um Damit dies möglich ?:

<? echo view::getUserSelector(array('onSelect' => 'function() { alert(this.id); }')); ?> 
  1. Wie füge ich den onSelect -Wert als Funktion von div#user_selector hinzu?
  2. Wie rufe ich div#user_selector.onSelect() mit this Referenz als div#user_select?

Javascript:

function selectUser(anchor) { 
    //remove all 'selected' classes from $user_selector child divs 
    //add 'selected' class to parent div.user of anchor 
} 
+1

Sie haben widersprüchliche Anforderungen: "Ich möchte, dass dieser Code ausgeführt wird, nachdem SelectUser() ausgeführt wurde. ... Und wie führe ich diese Funktion in der Funktion selectUser() aus?" Sie können es nicht gleichzeitig in * selectUser() * und * nach selectUser() ausführen. Können Sie klären, wonach Sie suchen? –

+0

Sie haben Recht, ich habe das Problem umformuliert. Danke – Ropstah

+0

da Sie normalerweise nicht ein div "auswählen" können, was stellen Sie sich den Benutzer vor, um ihn "auszuwählen"? – seanmonstar

Antwort

1

In der PHP-Funktion, wo Sie die Ausgabe alldem Sie diese in Script-Tags hinzufügen könnte, was gibt Ihnen, was Sie wollen (von dem, was ich verstehen kann).

<script type="text/javascript> 
var uSelect = document.getElementById('user_select'); 
uSelect.onSelect = function() { 
    alert(this.id); 
} 

function selectUser(anchor) { 
    //remove all 'selected' classes from $user_selector child divs 
    //add 'selected' class to parent div.user of anchor 
    uSelect.onSelect(); 
} 
</script> 

Aber eine weitere Ressource, die ich, darauf zu hinweisen, ist, wenn Sie die Funktion einfach erklären wollen, und sind gespannt, wie beliebiges Objekt zuordnen sein ‚dies‘ im Innern, haben Javascript-Funktionen Methoden call und apply.

Zum Beispiel: Sie könnten so etwas auch versuchen.

+0

In Ordnung, dieser Sorta funktioniert! Vielen Dank! – Ropstah