Mam następujący kod
$(document).ready(function() {
// When change the value in select it will send id to controller in order to return the price of service.
$(".select-service").change(function(){
var element_id = $(this).attr('id');
$.post("/services/get_price_of", {
message: this.value
},
function(data){
$("#" + element_id).parent().find(".price-input").val(data);
})
});
});
Strona jest ładowana z jednym zaznaczeniem, ale mogę dodać więcej zaznaczeń dynamicznie. Problem polega na tym, że dla wszystkich wybranych dynamicznie dodanych zdarzeń zdarzenie wcześnie nie działa. Czy ktoś może mi pomóc?
Pozdrowienia.
P.D: przepraszam za mój słaby angielski.
2 odpowiedzi
Użyj jquery on
$(document).ready(function() {
$("select").on("change", ".select-service", function(event){
var element_id = $(this).attr('id');
$.post("/services/get_price_of", {
message: this.value
},
function(data){
$("#" + element_id).parent().find(".price-input").val(data);
})
});
});
Od wersji jQuery 1.7 metoda .live() jest przestarzała
Możesz użyć delegowania zdarzeń za pomocą on()
i jego parametru selector
. Na przykład, aby przechwycić wszystkie kliknięcia elementów p
w #container
(nawet elementy p
dodane po dołączeniu detektora zdarzeń), możesz użyć tego kodu:
$("#container").on('click', 'p', function() {
$(this).css('color', 'red');
});
Dodatkowo, chociaż nie jest to związane z Twoim problemem, bardziej eleganckie podejście do wykorzystania celu zdarzenia w wywołaniu zwrotnym jest następujące:
var self = $(this);
someFunction(function() {
self.css('color', 'red');
});
Podobne pytania
Powiązane pytania
Nowe pytania
jquery
jQuery to biblioteka JavaScript, rozważ także dodanie tagu JavaScript. jQuery to popularna biblioteka JavaScript działająca w różnych przeglądarkach, która ułatwia przechodzenie przez Document Object Model (DOM), obsługę zdarzeń, animacje i interakcje AJAX, minimalizując rozbieżności między przeglądarkami. Pytanie oznaczone tagiem jQuery powinno być powiązane z jQuery, więc jQuery powinno być używane przez dany kod i przynajmniej elementy związane z użyciem jQuery muszą znajdować się w pytaniu.