したがって、このメソッド$('#swipeMe li').swipeDelete();
を要素にアタッチすると正常に機能しますが、新しいリスト項目を追加すると
$('.submitAsset').click(function(){
var asset = $('#asset_number').val();
$('.accounts #swipeMe').append('<li data-swipeurl="#"><a href="#">' + asset + '</a></li>');
$(this).swipeDelete();
$('#assetForm').slideUp();
});
効果がありません。リストに追加されたアイテムにもスワイプ削除があるように、このプラグインを正しくアタッチするにはどうすればよいですか? ありがとう。
これまでのところ、答えはどれも機能していません。間違って説明したに違いない。これが私のhtmlです:
<div class="accounts">
<h2>CC Acounts </h2>
<div id="CreditCards">
<ul id="swipeMe">
<li ><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 data-swipeurl="#"><a href="#">This works<</a></li>
<li >This doesn't</li>
</ul>
</div>
そしてJS:
$('#swipeMe li').swipeDelete();
$('#swipeMe li').on('click', function(){
$(this).trigger('swiperight')
});
ここでも、html に追加されたすべての要素がうまく機能しますが、追加されたものには swipeDelete 機能がありません。
プラグイン全体は次のとおりです。
/*
Name: jquery.swipeButton.js
Author: Andy andyMatthews
Website: http://andyMatthews.net
Version: 1.2.1
*/
(function($){
$.fn.swipeDelete = function(o){
o = $.extend( {}, $.fn.swipeDelete.defaults, o );
return this.filter('[data-swipeurl]').each(function(i, el){
var $e = $(el);
var $parent = $(el).parent('ul');
$e.on(o.direction, function ( e ) {
// reference the current item
var $li = $(this);
var cnt = $('.ui-btn', $li).length;
// remove all currently displayed buttons
$('div.ui-btn, .' + o.btnClass, $parent).animate({ width: 'toggle' }, 200, function(e) {
$(this).remove();
});
// if there's an existing button we simply delete it, then stop
if (!cnt) {
// create button
var $swipeBtn = $('<a>' + o.btnLabel + '</a>').attr({
'data-role': 'button',
'data-mini': true,
'data-inline': 'true',
'class': (o.btnClass === 'aSwipeBtn') ? o.btnClass : o.btnClass + ' aSwipeBtn',
'data-theme': o.btnTheme,
'href': $li.data('swipeurl')
})
.on('click tap', o.click);
// slide insert button into list item
$swipeBtn.prependTo($li).button();
$li.find('.ui-btn').hide().animate({ width: 'toggle' }, 200);
// override row click
$('div a:not(' + o.btnClass + ')', $li).on('click.swipe', function(e){
e.stopPropagation();
e.preventDefault();
$(this).off('click.swipe');
$li.removeClass('ui-btn-active').find('div.ui-btn').remove();
});
}
});
});
};
$.fn.swipeDelete.defaults = {
direction: 'swiperight',
btnLabel: 'niko',
btnTheme: 'e',
btnClass: 'aSwipeBtn',
click: function(e){
e.preventDefault();
$(this).parents('li').slideUp();
}
};
}(jQuery));