ho questo:jQuery on() non funziona su già aggiunto elementi DOM
$(document).on("click", ".prev", function(){
$(this).closest("div").find(".slider").animate({
"left": "+=450px"
}, 800, "easeInOutBack");
return false;
});
che funziona quando vengono aggiunti nuovi elementi al DOM, ma non funziona per gli elementi che sono già in il DOM.
quando faccio questo:
$(".prev").on("click", function(){
$(this).closest("div").find(".slider").animate({
"left": "+=450px"
}, 800, "easeInOutBack");
return false;
});
Si lavora per gli elementi del DOM, ma non nuove aggiunte al DOM. C'è un modo per far sì che funzioni per entrambi senza che io debba scrivere questo 2 volte o effettuare una chiamata a un'altra funzione?
Ecco uno screenshot:
Quindi, ecco una più approfondita descrizione di come funziona.
<div id="simple-pevs" style="padding-right: 20px;">
<?php require_once __DIR__ . "/data/get/PEVSection.php"; ?>
</div>
poi, quando qualcuno vuole aggiungere un'altra sezione fanno clic sul pulsante Aggiungi che poi viene eseguito questo codice:
$(".add-another-pev").click(function(){
$.get("./data/get/PEVSection.php?pev="+pevGroup, function(data){
$("#simple-pevs").append(data);
});
pevGroup++;
return false;
});
Come si può vedere che sta chiamando lo stesso che è stato pre-caricato in il php. La nuova opera (e tutti gli altri quelli aggiuntivi aggiunto) con l'evento click e il pugno non fa
@ArunPJohny
console.log($(".prev"));
dopo l'aggiunta di un nuovo elemento:
[a.prev, a.prev, prevObject: b.fn.b.init[1], context: document, selector: ".prev", jquery: "1.9.1", constructor: function…]
0: a.prev
1: a.prev
context: #document
length: 2
prevObject: b.fn.b.init[1]
selector: ".prev"
__proto__: Object[0]
Il primo frammento dovrebbe funzionare sia per i nuovi e vecchi elementi. Si prega di fornire un jsfiddle che mostri il contrario. –
Lo stai eseguendo in '$ (document) .ready()'? –
Questo deve funzionare, puoi provare '$ ('body'). On 'invece –