2015-06-23 19 views
7

ho il pezzo di sotto del codice che viene utilizzato per simulare una casella di testo:jQuery- rilevare il cambiamento nel contenuto di un campo SPAN

<label for="alertCmpVal">ALERT VALUE:</label> 
<span class="center textBox displayField highlight" id="alertCmpVal" contenteditable> <?php print $alert_val;?> </span> 

Ho bisogno di sapere quando cambia il contenuto, ad esempio, Clicco su di esso, e cambiare da 0 a 1.

ho provato:

$(document).ready(function() 
{ 
    $(document.body).on('change','#alertCmpVal',function() 
    { 
     alert("boo"); 
     $('#alertCmpVal').removeClass('highlight'); 
    }) 
} 

ma questo non sembra funzionare.

(nb $(document.body) viene utilizzato perché sulla mia pagina principale, il campo iniziale viene caricata dinamicamente)

Sto indovinando è il 'cambiamento' che non piace, ma non riesco a vedere che cosa per sostituirlo con. (jQuery/HTML5 va bene, poiché è usato solo internamente).

Ho visto alcuni esempi, ma in genere sembrano essere per scenari più complessi, richiedono più funzioni per rilevare il cambiamento quando si verificano certe altre cose, ma immagino ci deve essere una soluzione più semplice simile al metodo on change .

+0

accettano gentilmente una risposta che si adatta alle vostre esigenze. È passato quasi un anno. Non ne hai avuto uno migliore? –

risposta

31

È possibile utilizzare questo evento DOMSubtreeModified:

$("span").on('DOMSubtreeModified', function() { 
    alert("Span HTML is now " + $(this).html()); 
}); 

Snippet

$(function() { 
 
    $("a").click(function() { 
 
    $("span").html("Hello, World!"); 
 
    }); 
 
    $("body").on('DOMSubtreeModified', "span", function() { 
 
    alert("Span HTML is now " + $(this).html()); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<span>Hello</span> 
 
<a href="#">Click</a>

+0

Questo è molto vicino, ma si attiva quando la dom viene modificata per l'elemento AT ALL, non solo per l'html. Ciò significa che anche gli stili, gli attributi, gli elementi di dati o simili personalizzati lo faranno scattare. –

+0

Penso che questo evento sia deprecato anche nelle specifiche del livello 3 del DOM. Mozilla documenta gli eventi di mutazione come successori, ma non sono sicuro che questi siano ampiamente accettati. –

-7

penso che questo codice vi aiuterà.

$(document).ready(function() { 
    $('#myId').bind("contentchange", function(){ 
     alert("Changed"); 
    }); 

    $("#btn").click(function() { 
     $('#myId').html("Value").trigger("contentchange"); 
    }); 
}); 

http://jsfiddle.net/RKLmA/192/

+0

Questo non sta rilevando un cambiamento di contenuto in un intervallo che è la domanda. –