jQuery ile dinamik olarak eklediğim bir öğeye bir onclick olayı bağlamak istiyorum
Ancak bağlanan işlevi asla çalıştırmıyor. Bu örneğin neden çalışmadığını ve düzgün çalışmasını nasıl sağlayabileceğimi belirtirseniz mutlu olurum:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="da" lang="da">
<head>
<title>test of click binding</title>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
jQuery(function(){
close_link = $('<a class="" href="#">Click here to see an alert</a>');
close_link.bind("click", function(){
alert('hello from binded function call');
//do stuff here...
});
$('.add_to_this').append(close_link);
});
</script>
</head>
<body>
<h1 >Test of click binding</h1>
<p>problem: to bind a click event to an element I append via JQuery.</p>
<div class="add_to_this">
<p>The link is created, then added here below:</p>
</div>
<div class="add_to_this">
<p>Another is added here below:</p>
</div>
</body>
</html>
EDIT: Örneği, yöntemin eklendiği iki öğe içerecek şekilde düzenledim. Bu durumda, alert()
çağrısı asla yürütülmez. (bunu bir yorumda belirttiği için @Daff'a teşekkürler)
Canlı yöntemine ne dersiniz?
$('.add_to_this a').live('click', function() {
alert('hello from binded function call');
});
Yine de, yaptığınız şey işe yarayacak gibi görünüyor. Oldukça benzer görünen başka bir gönderi var.
Bunu bir düşünün:
jQuery(function(){
var close_link = $('<a class="" href="#">Click here to see an alert</a>');
$('.add_to_this').append(close_link);
$('.add_to_this').children().each(function()
{
$(this).click(function() {
alert('hello from binded function call');
//do stuff here...
});
});
});
Çalışacaktır çünkü onu her belirli öğeye eklersiniz. Bu nedenle - bağlantınızı DOM'a ekledikten sonra - eklediğiniz öğeyi DOM'da bir JQuery öğesi olarak açıkça seçmenin ve tıklama olayını ona bağlamanın bir yolunu bulmanız gerekir.
En iyi yol muhtemelen - önerildiği gibi - canlı yöntem aracılığıyla belirli bir sınıfa bağlamak olacaktır.