【问题标题】:Delegate not Working on Cloned Objects委托不处理克隆对象
【发布时间】:2014-05-29 02:08:41
【问题描述】:

我在 jquery 中使用委托时遇到了一个奇怪的问题。

HTML:

<div id="workbenches">
    <div class="carousel-inner">
        <div class="item active">
            <div class="workbench">
                <a href="javascript:void(0)">Link</a>
            <div> <! .workbench -->
        </div> <!-- .item -->
    </div> <!-- .carousel-inner -->
</div> <!-- #workbenches -->

Javascript:

在下面的 javascript 中,我克隆了 div.item 对象。

<script type="text/javascript">
    $(document).ready(function() {
        var workbenchObject = $('.carousel-inner .item');
        workbenchObject.clone().prependTo('#workbenches .carousel-inner').removeClass('active');
        workbenchObject.clone().appendTo('#workbenches .carousel-inner').removeClass('active');
    });
</script>

由于有些标签是由javascript生成的,所以我尝试将点击事件绑定到a标签上。

<script type="text/javascript">
    $('.workbench').delegate('a', 'click', function() {
        alert('hello');
    });
</script>

但是,上面的代码只适用于原始的a 标签(不适用于克隆的对象)。

代码有什么问题?你能帮帮我吗?

【问题讨论】:

    标签: javascript jquery html delegates


    【解决方案1】:

    您需要将处理程序绑定到#workbenches(或#workbenches .carousel-inner),因为.workbench 对象是动态创建的。即使在事件委托处理程序应该添加到静态元素。

    $('#workbenches').delegate('.workbench a', 'click', function() {
        alert('hello');
    });
    

    【讨论】:

      猜你喜欢
      • 2011-03-08
      • 2011-11-07
      • 2012-05-06
      • 1970-01-01
      • 2013-01-03
      • 2017-02-11
      • 2011-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多