在创建元素并将其附加到DOM后,如何应用插件?

时间:2013-01-16 11:24:58

标签: jquery

我正在使用the example here向我的网站添加菜单。在原始的HTML中有一个div,里面有这个菜单。我在它上面调用了circleMenu效果。

            <ul id="container" >
            <li class="ui-state-default">example1
                <!--menu button-->
                <ul class="menu" id="menu6">
                    <li><a href="#"></a></li>
                    <li><a href="#" alt="Edit" title="Edit"><img src="images/edit.jpg" /></a></li>
                    <li><a href="#" alt="Copy" title="Copy"><img src="images/copy.jpg" /></a></li>
                    <li><a href="#" alt="Delete" title="Delete"><img src="images/delete.jpg" /></a></li>
                </ul>
            </li>
        </ul>

                $('.menu').circleMenu({
                direction: 'right',
                circle_radius: 80,
                item_diameter: 20,
                trigger: 'click'
            });

现在,在页面的其他位置,我创建了example2列表项和相同的菜单。除此之外,circleMenu效果不会附加到它,因为它刚刚创建。如何在创建后立即应用效果?或修改现有的通话,以便在当时使用所有当前的“.menu”项目?

2 个答案:

答案 0 :(得分:1)

使用jquery .on()

$('.menu').on("load", data, function(event){
    $('.menu').circleMenu({
         direction: 'right',
         circle_radius: 80,
         item_diameter: 20,
         trigger: 'click'
    });
});

您可以在第二个参数中传递数据,或者只是将其设置为null。

答案 1 :(得分:0)

您可能会发现jQuery的.bind().live()已弃用)对于向动态创建的元素添加事件非常有用。

http://api.jquery.com/bind/

因此,假设您创建了新元素并为其指定了#example2 - 然后您需要在代码中对此新创建的元素调用.bind()