Jquery - живи готов - PullRequest
       27

Jquery - живи готов

0 голосов
/ 15 сентября 2011

Мне нужно использовать функцию live на готовом документе.

Я попробовал этот код: ( Это не работает правильно. )

Спасибо за совет.

$(document).live('ready', function() {

 $(".icons").contextMenu(
                { 
                    menu: 'menuIcons'                    
                }, 
                function(action, el, pos) 
                { 
                    contextMenuWork(action, el, pos); 
                }); 

function contextMenuWork(action, el, pos) {
            switch (action) {
                case "open":
                    {
                        alert("open");
                        break;
                    }
            }
            }


});

Ответы [ 4 ]

1 голос
/ 15 сентября 2011

попробуйте это:

function contextMenuWork(action, el, pos) {
  switch (action) {
    case "open": {
      alert("open");
      break;
    }
  }
}
$(".icons:not(.live)").live('click',function(e){
  if (e.which === 2) {
    e.preventDefault();
    $(this).addClass('live').contextMenu({ 
      menu: 'menuIcons'                    
    }, 
    function(action, el, pos) { 
      contextMenuWork(action, el, pos); 
    }).trigger({type:'mousedown',button:2}).trigger({type:'mouseup'});
  }
});

используется поздняя привязка для привязки к событию, когда элемент щелкается правой кнопкой мыши;затем он повторно запускает событие правого клика.

1 голос
/ 15 сентября 2011

В вашем коде AJAX, когда вы знаете, с какими данными вы можете связать плагин с этими данными, добавив его в DOM

(function() {
    var contextMenuWork = function(action, el, pos) {
        switch (action) {
            case "open":
            {
                alert("open");
                break;
            }
        }
    };

    $.ajax({
        url: myUrl,
        success: function( data ) {

        $("body").replaceWith(data); // Example!

        $(".icons", data).contextMenu({
            menu: 'menuIcons'                    
        }, function(action, el, pos) {
            contextMenuWork(action, el, pos); 
        }); 

        }
    });
})();
1 голос
/ 15 сентября 2011

$(document).live() на самом деле не имеет смысла, поскольку может быть только один document, и его никогда нельзя создать заново без перезагрузки страницы.

Вы хотите позвонить:

$(document).ready(function() {...

Если объект document DOM уже загружен, jQuery немедленно вызовет вашу функцию.

0 голосов
/ 12 ноября 2012
...