2010-02-16 14 views
8
OperationSelector = function(selectElement) { 
    this.selectElement = selectElement; 
} 

OperationSelector.prototype.populateSelectWithData = function(xmlData) { 
    $(xmlData).find('operation').each(function() { 
     var operation = $(this); 
     selectElement.append('<option>' + operation.attr("title") + '</option>');    
    }); 
} 

Jak mogę uzyskać dostęp do OperationSelector.selectElement w bloku iteracji?JavaScript zewnętrzny zakres zmienny dostęp

+3

Nawiasem mówiąc, nie powinieneś generalnie używać zawieszania napisów HTML do tworzenia nowych opcji. Jeśli 'title' może zawierać' <'lub' & 'masz kłopoty (potencjalnie problemy bezpieczeństwa). Użycie 'nowej opcji (operation.attr ('title'))' do utworzenia węzła jest prostsze i bezpieczniejsze. – bobince

+0

Bobince, dzięki za porady! – dmitrynikolaev

Odpowiedz

13

Przypisywanie go do zmiennej lokalnej w zakresie funkcji przed funkcją iteracji. Następnie możesz odwoływać się do niego w:

OperationSelector = function(selectElement) { 
    this.selectElement = selectElement; 
} 

OperationSelector.prototype.populateSelectWithData = function(xmlData) { 
    var os = this; 
    $(xmlData).find('operation').each(function() { 
     var operation = $(this); 
     os.selectElement.append(new Option(operation.attr("title"))); 
    }); 
}