2009-02-04 7 views
0

J'ai le code qui rend le HTML« this » en javascript et les préfixes de contrôle ASP.NET

<tr> 
    <td>Control 1 with onclick="javascript:Test(this);" </td> 
    <td>Control 2</td> 
    <td><span><div>Control 3</div></span></td> 
</tr> 

function Test(myThis) 
{ 
    //Here I would like to get references to the siblings of Control 1 (in this ex: Control 2, Control 3) 
    //and disable them. Any ideas? 

} 

suivant J'utilise cette approche de trouver les frères et sœurs comme cela est dans un UserControl imbriqué avec la profondeur = 3 et ASP.NET se réfère aux contrôles avec un préfixe qui est terriblement difficile surtout si j'ai plusieurs instances du contrôle sur la page.

Répondre

5

si vous utilisez une bibliothèque javascript tel que jQuery, il devient vraiment facile:

$(this).siblings().disable(); 

http://docs.jquery.com/Traversing/siblings#expr

Si vous ne disposez pas d'une bibliothèque jQuery ou similaire, vous aurez à faites-le manuellement:

function disableSiblingsOf(elem) 
{ 
    var nodes = elem.parent.childNodes; 
    for(var i=0; i<nodes.length; i++); 
    if(nodes[i] != elem) 
     nodes[i].disabled = true; 
} 

Cela devrait faire l'affaire.

0

Ajouter jQuery et utiliser les éléments suivants:

$(myThis).nextAll("td").each(function(){ 
    // Code to "disable" them here, dunno what you mean by that though as they are tds. 
}); 
0

Je vais supposer que vous ne disposez pas d'une bibliothèque Javascript disponible, car je vois déjà des réponses jQuery affichées.

Cela dépend beaucoup du HTML rendu par vos contrôles. Cependant, vous pouvez probablement simplement référencer this.parent dans une boucle jusqu'à ce que this.tagName === 'TR' ou this.parent devienne null. Puis redescendez.

Questions connexes