【问题标题】:jQuery limit selector to it's parentjQuery 限制选择器为其父级
【发布时间】:2012-08-02 05:00:24
【问题描述】:

我正在尝试为 jQuery 创建上下文菜单,我正在使用 jQuery UI 对话框并修改 它可以满足我的需要:

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 仍然存在

如何在菜单中选择元素?

【问题讨论】:

    标签: javascript jquery jquery-ui jquery-selectors


    【解决方案1】:

    要在另一个元素中查找具有某个类的所有元素,您可以使用find()

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

    如果您想隐藏除UL 元素之外的特定类的所有元素:

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

    或仅定位 LI 元素

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

    【讨论】:

    • 我用过 $(this).find('.ui-dialog-titlebart').hide();而且它不起作用,看起来在绑定事件触发之前打开了对话框,有没有办法解决这个问题?
    【解决方案2】:
    $('.ui-dialog-titlebart', this).hide()
    

    $('the item you want', this) 是仅当它是当前元素的子元素时才选择该项目的快捷方式

    【讨论】:

    • $('.ui-dialog-titlebart', this) 和 $(this).find('.ui-dialog-titlebart') 有区别吗?性能方面......
    【解决方案3】:

    你可以这样试试,

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

    您可以参考jQuery Selector。如果需要..

    【讨论】:

      猜你喜欢
      • 2023-04-04
      • 2011-03-01
      • 2021-03-31
      • 2021-11-09
      • 1970-01-01
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多