javascript
  • jquery-plugins
  • contextmenu
  • jquery
  • 2012-10-17 39 views 3 likes 
    3

    如果ajax請求改變我的div內容,我正在嘗試更新contextmenu項目。在ajax請求上啓用jQuery contextMenu項目

    這裏是我的意思是我有這樣一個div:

    <div id="" class="message" data-options='{"update":"YES", "delete":"NO"> 
    </div> 
    

    和上下文菜單jQuery的部分(這隻會發生一次,當身體負載):

    $.contextMenu({ 
         selector: '.message', 
         trigger: 'left', 
         callback: function(key, options) { 
          var m = "clicked: " + key; 
          window.console && console.log(m) || alert(m); 
         }, 
         items: { 
          "update": { 
           name: "Update", 
           disabled: function(key, opt) { 
            return (this.data("options").update === "NO") 
           }, 
          }, 
          "delete": { 
           name: "Delete", 
           disabled: function(key, opt) { 
            return (this.data("options").delete=== "NO") 
           } 
          //etc. rest of the code 
    

    我期待當一些Ajax請求發生或禁用/啓用的項目重新創建它在某種程度上

    所以現在一些Ajax請求發生和成功,我嘗試更新div.messagedata-option因爲我雖然啓用/禁用按鈕是這樣的:

    In ajax.success function : 
    - disable or enable menu items 
    

    --------Actually--------Simplified

    其實這個問題/答案很相似,我目前的問題:

    Disable and enable jQuery context menu

    我想啓用/如果我能夠在這個虛擬示例中做到這一點,我認爲我也可以處理ajax請求,並在某些按鈕單擊時禁用contextMenu項目。

    +0

    我主要懷疑你是否應該使用這個數據屬性。我不確定您是否可以/應該使用對象作爲數據屬性。我的第一印象是值被存儲爲字符串..?您可以使用JavaScript將對象附加到元素。 – EricG

    +0

    你指出的答案有什麼不對? –

    回答

    3

    我用build選項,添加新的項目,你可以看到,你可以用任何你想要在這裏的項目做:http://jsfiddle.net/oceog/Tvv4P/1/

    HTML:

    <div class="context-menu-one box menu-1"> 
        <strong>right click me</strong> 
    </div> 
    
    <button id="add"> Add item</button> 
    <button id="disable_cut"> Disable cut</button> 
    <button id="enable_cut"> enable cut</button> 
    ​ 
    

    JS:

    $.contextMenu({ 
        selector: '.context-menu-one', 
        build: function($trigger, e) { 
         console.log(e); 
         return { 
          callback: function(key, options) { 
           var m = "clicked: " + key; 
           console.log(m); 
           //window.console && console.log(m) || alert(m); 
          }, 
          items: items 
         }; 
        } 
    }); 
    var items = { 
        "edit": { 
         name: "Edit", 
         icon: "edit" 
        }, 
        "cut": { 
         name: "Cut", 
         icon: "cut" 
        }, 
        "copy": { 
         name: "Copy", 
         icon: "copy" 
        }, 
        "paste": { 
         name: "Paste", 
         icon: "paste" 
        }, 
        "delete": { 
         name: "Delete", 
         icon: "delete" 
        }, 
        "sep1": "---------", 
        "quit": { 
         name: "Quit", 
         icon: "quit" 
        }}; 
    var newitemN=0; 
    $('#add').click(function() { 
          var newitem={}; 
         newitem['newitem_'+newitemN]={ 
          name: 'new item #'+newitemN, 
          icon: "copy" 
         }; 
        newitemN++; 
        $.extend(items,newitem); 
    }); 
    
    $('#disable_cut').click(function() { 
        items.cut.disabled=true; 
    }); 
    
    $('#enable_cut').click(function() { 
        items.cut.disabled=false; 
    }); 
    
    相關問題