/ / jquery bez pridania tlačidla - jquery, html

jquery bez pridania tlačidla - jquery, html

Pridávam tlačidlo pri kliknutí a nové tlačidlo na upozornenie na niečo, čo je naňho kliknuté, ale momentálne jeho neoznámenie správy o tom, kedy bolo kliknuté nové tlačidlo

Takže, čo s tým robím zle.

tu je to, čo mám zatiaľ

<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#first").bind("click", addbtn);
$("#second").on("click", alert);

function addbtn(){
$(".box").html("<input type="submit" value="Click me" id="second" />");
}
function alert(){
alert("works");
}
});
</script>
</head>
<body>
<input type="submit" value="Click me" id="first" />
<div class="box"></div>
</body>
</html>

odpovede:

2 pre odpoveď č. 1

Vo vašom príklade ste váš handler udalostí viazaný na "second" predtým, ako existuje. Preto neexistuje nič, na čo by sa to viazalo.

Teraz, pretože používate jquery 10+ liveudalosti nefungujú, takže musíte použiť obsluhu na udalosti. Spúšťač udalostí ON sa teraz pripája k objektu a poskytuje voľbu voliča. V tomto prípade by ste chceli spúšťať a udalosť po kliknutí pre volič # second. Ak som stratil viac informácií tu. http://api.jquery.com/on/

<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#first").bind("click", addbtn);

$(".box").on("click", "#second", function(){
alert("works");
})

function addbtn(){
$(".box").html("<input type="submit" value="Click me" id="second" />");
}

});
</script>
</head>
<body>
<input type="submit" value="Click me" id="first" />
<div class="box"></div>
</body>
</html>

Teraz je ďalší problém, že ste definovali funkciu alert() ktorý vyvolá funkciu vstavaného alert(), Tak ako ste definovali funkciu, ktorú ste podstatne prepísali a vedie k nekonečnej rekurzii. Vyhnite sa prepusteniu metód prehliadača, pokiaľ to absolútne nepotrebujete.

Na zdravie.