1

私はjsfiddleの実例を作りました。見てください:http://jsfiddle.net/SsqEv/

基本的に、単純な html マークアップを作成します。

<div id="container">
    <div id="test1">click me</div>
</div>

そして、次の Javascript コード:

// attach click event
$('#test1').click(function() {alert('test');});
// create a new strring that will be appended to the container
var data = '<div id="test2">click me 2</div>';
// move click handler from #test1 to #test2
data = $(data).bind("click", {}, $("#test1").data("events").click[0]);
// add element to the DOM
$("#container").append(data);
// remove click from #test1
$('#test1').unbind("click");

これはすべて機能します。ここで、いくつかの jQuery contextMenu プラグインを含むカスタム スクリプトがあり、コンテキスト メニューをul li要素にアタッチするとします。

$("ul#vertical-menu li a[data-menuitemid]").contextMenu({
    menu: 'myMenu',
    beforeShow: function(contextMenu, item) {
        if ($(item).parent('li').hasClass('state-ok')) {
            $(contextMenu).children('.ready').hide();
        } else {
            $(contextMenu).children('.noready').hide();
        }
    }
}, function(action, el, pos) {
    changeStatus(model.id, action, $(el).attr('data-menuitemid'), el);
});

時々、li を削除する必要があり、これが完了したら、同じ方法で contextMenu をアタッチする必要があります。最適なオプションは、contextMenu を削除されliたものから追加されたものに移動することです。どうすればそれを達成できますか?

編集: 私はこの contextMenu を使用しています: http://labs.abeautifulsite.net/archived/jquery-contextMenu/demo/

ul licontextMenu を新しい動的に追加された s にアタッチするのが難しいため、すべての要素に「ライブ」でバインドしたいと思いliます。どうすればそれを達成できますか?

4

0 に答える 0