为什么此方法不会附加到附加的列表项?

时间:2012-12-17 12:41:37

标签: jquery jquery-mobile appendto

我正在使用插件来清除列表中的删除行:

        $('#swipeMe li').swipeDelete();

        $('#swipeMe li').on('click', function(){
            $(this).trigger('swiperight')
        });

使用html编写swipeDelete功能时可以正常工作:

<h2>Assets </h2>
<div id="Assets">
        <ul id="swipeMe">
            <li ><a href="#">This doesn't works</a></li>
            <li data-swipeurl="#"><a href="#">This works<</a></li>
            <li data-swipeurl="#"><a href="#">This works<</a></li>
            <li data-swipeurl="#"><a href="#">This works<</a></li>
            <li data-swipeurl="#"><a href="#">This works<</a></li>
            <li data-swipeurl="#"><a href="#">This works<</a></li>
            <li data-swipeurl="#"><a href="#">This works<</a></li>                
            <li >This doesn't</li>      
        </ul>
</div>

但它不适用于我追加的新列表项目:

$('.submitAsset').click(function(){
var asset = $('#asset_number').val();
$('<li data-swipeurl="#"><a href="#">' + asset + '</a></li>')
    .appendTo('#Assets #swipeMe').swipeDelete();
$('#assetForm').slideUp();    
});

请帮忙:/

2 个答案:

答案 0 :(得分:1)

$('<li data-swipeurl="#"><a href="#">' + asset + '</a></li>')
    .appendTo('#Assets #swipeMe').swipeDelete().on('click', function(){
            $(this).trigger('swiperight')
        });

如果swipeDelete()方法支持链接,这将起作用。

试一试。

答案 1 :(得分:0)

您在附加代码中对swipeDelete()的调用应该没问题。我唯一看错的是你还需要附加click事件处理程序。通过更改其分配方式,您可以将其附加到稍后通过代码添加的元素...

    $('#swipeMe').on('click', 'li', function(){
        $(this).trigger('swiperight')
    });

这会将点击处理程序分配给ID为li的元素中的所有#swipeMe元素,无论它们是否在代码运行时存在。