. Dieser Vorgang wiederholt sich erneut, diesmal jedoch die Merkmale des ausgewählten Modells.
Dazu und da ich viele verschiedene Bereiche habe, die dasselbe System benötigen, verwende ich eine Klasse mit demselben Namen in jedem Menü auswählen und ein anderes für jedes Modell auswählen.
<div class='brand_select' id='14'>
<%= f.collection_select :brand, Product.find_all_by_area(14, :group => 'brand'), :brand, :brand, :prompt => 'Choose brand' %>
</div>
<div class='model_select'>
<%= f.collection_select :model, Product.find_all_by_area(14), :model, :model, :prompt => 'Choose model' %>
</div>
<div class='brand_select' id='15'>
<%= f.collection_select :brand, Product.find_all_by_area(15, :group => 'brand'), :brand, :brand, :prompt => 'Choose brand' %>
</div>
<div class='model_select'>
<%= f.collection_select :model, Product.find_all_by_area(15), :model, :model, :prompt => 'Choose model' %>
</div>
Und der Javacript:
$('.brand_select').change(function(event) {
// option selected
var brand=$(event.target).find('option:selected').val();
// if none is selected
if (brand == ''){
$(event.target).parent().parent().find('.modelo_select').hide();
$(event.target).parent().parent().find('.caracteristica').hide();
}
else {
$(event.target).parent().parent().find('.modelo_select').show();
// find id to search on the database
var id=$(event.target).parent().attr('id');
// find the target (id of the object)
var target=$(event.target).attr('id');
$.ajax({
type: "POST",
url: "http://"+location.host+"/model/"+brand+"/"+id+"/"+target,
brand: brand,
id: id,
target: target
});
}
});
$('.model_select').change(function(event) {
// find model selected to search on the database
var model=$(event.target).find('option:selected').val();
// find brand selected to search on the database
var brand=$(event.target).parent().parent().find('.marca_select').find('option:selected').val();
// find id to search on the database
var id=$(event.target).parent().parent().find('.marca_select').attr('id');
// find the target (id of the object)
var target=$(event.target).attr('id');
$.ajax({
type: "POST",
url: "http://"+location.host+"/feature/"+brand+"/"+model+"/"+id+"/"+target,
brand: brand,
model: model,
id: id,
target: target
});
});
Dieser Code funktioniert, wiederholt das Ereignis die gleiche Häufigkeit wie die Klassen mit diesem Namen.
Was ich tun möchte, ist, dass die Funktion jedes Mal, wenn ein Änderungsereignis für die Klasse erforderlich ist, nur einmal ausgeführt wird.
Ich weiß nicht, ob dies mit Klassenstruktur möglich ist, die ich habe oder ob ich eine ID oder eine Klasse mit unterschiedlichen Namen für jeden Bereich mit der Funktion in Verbindung bringen muss.