5

jQGridjQuery Draggable satırları ile jQuery Context Menu çalışıyorum.jQuery İçerik Menüsü jQuery Sürüklenebilir ile çakışıyor

Yaşadığım sorun, jQuery Context Menu eklediğimden bu yana sürüklenebilir eylemin tek tıklamayla (normal sürüklemenin yanı sıra) tetiklenmesidir. Menü almak için bir satırı tıklattığımda biraz garip görünüyor ve sonra başka bir satırın dışına tıkla (menüyü silmek için) ve bu satır imleci izlemeye başlar.

Aşağıdaki snippet'te jquery Context Menu'den evt.stopPropagation(); ile ilgili mi?

$(this).mousedown(function(e) { 
    var evt = e; 
    evt.stopPropagation(); 
    $(this).mouseup(function(e) { 
     e.stopPropagation(); 
     var srcElement = $(this); 
     $(this).unbind('mouseup'); 
     if(evt.button == 2) { 
      // Hide context menus that may be showing 
      $(".contextMenu").hide(); 

sürüklenebilir veya içerik menüsü arasında bir seçim yanı sıra bu konuda yapabileceği bir şey var mı?

+0

Sayfa bulunamadı ... –

cevap

9

İlgili bir sorun yaşadım - ekli bağlam menüleri içeren sürüklenebilir öğeler her zaman sürüklenemedi. Benim durumumda, eklenmiş içerik menüsü ile sürüklenebilir bir öğe (daha büyük bir div öğesinde yüzen bir div öğesi) yalnızca bir kez sürüklenebilir - sürükleme tamamlandıktan sonra, öğe içeren div'a tıklanıncaya kadar artık sürüklenemez. Bağlam menüleri olmayan neredeyse aynı sürüklenebilir öğeler her zaman sürüklenebilir. Kapsayıcıyı yeniden yüklerken neden sürüklenebilirliği tıklarım bilmiyorum, ancak tutarlı bir şekilde yaptı. == 2 e.button çeki ekleme

jQuery(this).mousedown(function(e) { 
    var evt = e; 
    if (e.button == 2) //Added to make this compatible with draggable 
     evt.stopPropagation(); 
    jQuery(this).mouseup(function(e) { 
     if (e.button == 2) //Added to make this compatible with draggable 
      e.stopPropagation(); 
     var srcElement = jQuery(this); 

: Sorunuza

sayesinde doğru yönde beni işaret ederek, ben içerik menüsü koduna baktı ve benim problem çözüldü, hangi aşağıdaki gibi modifiye sağ tıklama etkinliğinin yayılmasını durdurur ve şimdi benim sürüklenebilir div'larım sürüklenebilir kalıyor ve içerik menüsü hala çalışıyor. Şimdiye kadar bunu IE8'de test ettim ve sorununuzu çözüp çözemeyeceğini bilmiyorum, ama yapıp yapmadığını bilmek istiyorum.

Chrome ile uyumluluk için == DÜZENLEME == Carl R öneri Başına

: o önerdi olarak

jQuery(this).mousedown(function(e) { 
    var evt = e; 
    if (e.button != 2) return; //Added to make this compatible with draggable 
    evt.stopPropagation(); 
    jQuery(this).mouseup(function(e) { 
     e.stopPropagation(); 
     var srcElement = jQuery(this); 

Ben modunu değiştirdik ve bu şekilde IE8'de gayet çalışıyor.

+1

Bu benim için kromda işe yaramadı. Kodu $ (this) .mousedown olarak değiştirdim (function (e) { if (e.button! = 2) // Bunu, { geri dönüşü ile uyumlu hale getirmek için eklendi: } 've ikinci düğmeyi atladı Bu kadar işe yaramış gibi gözüküyor: –

4

Aynı sorunu yaşadım ve jquery.contextMenu.js adresinden ilk iki * .stopPropagation() dosyasını yorumladım. Artık her şey düzgün çalışıyor.

Bu durumda bu durakların tek olası kullanımı, bazı minimum performans için olabilir. Aslında bunları * .preventDefault() ile değiştirmek benim için daha mantıklı olur. Bir şey mi eksik?

+0

çözümünüz B Bill yerine benim için işe yaradı. – HatSoft

İlgili konular