绑定点击动态创建的div不起作用

时间:2014-04-11 07:26:39

标签: jquery bind

我已将此设置为将点击绑定到任何动态创建的div中的锚点,其中包含" expFold"

$('body').ready(function()
{
    $('.expFold').on('click', 'a', function (event) {
    alert('here');      
});
}

我将div硬编码到页面中以检查点击是否正常...

<div class="expFold"><a href="#">▼</a></div>

确实如此。

然而,之后添加的任何div都是这样......

$("#myParentDiv").append('<div class="expFold"><a href="#">▼</a></div>');

...不要回应点击。

为什么他们没有回应,有什么明显的跳跃?

感谢您的时间和帮助。

4 个答案:

答案 0 :(得分:3)

您需要事件委派。试试这个:

$('#myParentDiv').on('click', '.expFold a', function (event) {
  alert('here');
});

答案 1 :(得分:1)

由于您的div动态创建了DOM,因此点击事件将无法用于这些链接。在这种情况下,事件委派将帮助您附加该事件。

试试这个

$(document).ready(function () {
    $(document).on('click', ".expFold a", function (e) {

        alert('working');
    });
});

答案 2 :(得分:0)

首先,将您的绑定代码放在一个函数中:

function bidingDivClick(){
   $('.expFold').on('click', '.expFold a', function (event) {
    alert('here');      
});
}

之后,在将div附加到html中时调用此函数:

$("#myParentDiv").append('<div class="expFold"><a href="#">▼</a></div>');
bidingDivClick();

答案 3 :(得分:0)

委派活动的另一种方式......

$(function(){
    $(this).on('click', function (e) {
        var $t = $(e.target), doc = this;
        // Testing whether the element that triggered the event was what an anchor inside a ".exFold"
        if($t.is('.expFold a')){
            alert('Anchor clicked !');
        }

    });
});