2012-08-02 57 views
0

我想創建的jQuery上下文菜單,我用的是jQuery UI的對話框,修改 它適合我的需要:jQuery的限制選擇到它的父

var menu = $(this); 
menu.dialog('option', 'position', [jsEvent.clientX, jsEvent.clientY]); 
    menu.unbind('dialogopen'); 
    menu.bind('dialogopen', function(event, ui) { 

     $('.ui-dialog-titlebar').hide(); 
     $('.ui-widget-overlay').unbind('click'); 
     $('.ui-widget-overlay').css('opacity', 0); 
     $('.ui-widget-overlay').click(function() { 
      menu.dialog('close'); 
     }); 
    }); 
    menu.dialog('open'); 

現在,這僅僅在進行存在使用.ui-dialog-titlebar因爲當過上下文菜單火災

我想這樣做,他們就會消失無UI:

var id = '#'+$(this).attr('id'); 

,只有選擇元素在我的菜單

$(id+' .ui-dialog-titlebar').hide(); 

,但它似乎並不工作,.ui-dialog-titlebar仍然存在

我如何在菜單中選擇ONLY元素?

回答

1

的孩子要找到另一個元素內的某一類的所有元素你可以使用find()

$(this).find('.ui-dialog-titlebart').hide(); 

如果你想隱藏與某一類的所有元素,除了UL元素:

$('.ui-dialog-titlebar').not('ul').hide(); 

或目標只是LI元素

$('li.ui-dialog-titlebar').hide(); 
+0

我用$(this).find('。ui-dialog-titlebart')。hide();並且它不起作用,看起來對話框在綁定事件觸發之前打開,有沒有辦法解決這個問題? – tom91136 2012-08-02 05:29:21

1
$('.ui-dialog-titlebart', this).hide() 

$(「你想要的項目」,這一點)是選擇項目的快捷方式,只有當它是當前元素

+0

$('。ui-dialog-titlebart',this)和$(this).find('。ui-dialog-titlebart')之間是否有區別?性能明智.... – tom91136 2012-08-02 05:19:00

+0

不知道,對不起。 – 2012-08-02 05:22:00

1

你可以嘗試這樣的,

var menu = $(this); 
$(menu).find('.ui-dialog-titlebar').hide(); 

你可以參考jQuery Selector。如果需要..