2014-05-06 2 views
0

j'ai une application backbone.js, il a une sélection sur l'interface utilisateur, comme ceci:épine dorsale JS sélectionnez ne fonctionnera pas

(modèle est écrit dans Jade)

select.color 
    option(value='-1') --select color-- 
    option(value='0') red 
    option(value='1') blue 

l'application est comme :

events: 
    'change .color': 'changeColor' 

changeColor:() -> 
    idx = $(@el).find('.color').val() 
    color = $(@el).find('.color').filter(idx).text() 
    alert("Color is : #{idx}:#{color}") 

Cependant, lorsque je l'ai exécuté, il affiche uniquement le bon IDX mais pas de texte. J'ai essayé d'utiliser $(@el).find('.color').filter(':selected').text() directement, il ne fonctionnera pas non plus. Quelqu'un peut-il aider?

Répondre

0

Vous souhaitez utiliser .find() au lieu de .filter() car le filtre filtre les options select et non child. Alors:

$(@el).find('.color').find(':selected').text() 

Ps Backbone ajoute automatiquement trouver le point de vue pour vous si:

$(@el).find('.color'); 

équivaut à:

@.$('.color') 
Questions connexes