0

編集ボタンをクリックしてコントロールを有効または無効にしようとしていますが、jQueryデリゲート関数を使用してアクセスできませんでした。コードは次のとおりです。

$('#table-view-task').delegate('tr:not(:first)','click', function(){
    var id = $(this).find('td:first').text();
    var task = $(this).find('td:eq(1)').text();
    $(this).popover({
        html: true,
        delay: { show: 0, hide: 0 },
        title: function () {
                return '<div>'+task+'</div>';
        },
        content: function () {
                return  '<div id="pop-container">'+
                        '<label>ID</label>'+
                        '<input type="text" value="'+id+'" id="txt-edit-id" disabled/>'+
                        '<label>Task</label>'+
                        '<input type="text" value="'+task+'" id="txt-edit-task" disabled/>'+
                        '<a href="#" class="btn" id="btn-edit-task">Edit</a>'+
                        '<a href="#" class="btn" id="btn-save-task">Save</a>'+
                        '</div>';
        }
    });  
});

これにより、すべての html 要素で適切にポップオーバーが出力されます。jquery を使用してこれらの要素にアクセスする方法。編集リンクにアクセスする方法は次のとおりです。

$('#pop-container').delegate('a','click', function(){
    alert('editing');
});
4

1 に答える 1

0

リンクのデフォルト アクションをキャンセルする必要があります [編集:bodyの代わりにリッスンします#pop-container]。試す

$('body').delegate('#btn-edit-task, #btn-save-task','click', function(e){
    e.preventDefault();
    alert('editing');
});

リンクのデフォルト アクションをキャンセルしない場合、href属性で指定された URL に移動するだけです。

jQuery 1.7以降.delegate()のメソッドに取って代わられているため、次の.on()ようにする方がさらに良いことに注意してください。

$('body').on('click', '#btn-edit-task, #btn-save-task', function(e) {
    e.preventDefault();
    alert('editing');
});
于 2013-02-27T19:36:05.093 に答える