jquery选择器的问题

时间:2010-11-26 15:11:43

标签: javascript jquery jquery-selectors css-selectors

我有一个函数,我可以调用将圆角修复应用于'button.button,button.ui-button,input.button和input.ui-button',它只是在元素旁边添加div然后把所有的东西包裹在另一个div里。

它在页面加载时工作正常,但是,我必须创建一个函数,我可以调用它来修复页面加载时不可用的按钮。

$(document).ready(function(){
    // Adds necessary div elements to buttons on page load.
    $('input.button:visible, button.button:visible, input.ui-button:visible, button.ui-button:visible').after('<div class="button-right"></div>').wrap('<div class="button-wrapper" />');
    $('input.button-large:visible, button.button-large:visible').after('<div class="button-large-right"></div>').wrap('<div class="button-large-wrapper" />');
});
function CheckIEButtons(){
    // Function to add necessary div elements to buttons - useful for buttons not accessible on page load
    $("input.button:visible:not(div.button-wrapper),button.button:visible:not(div.button-wrapper)").after('<div class="button-right"></div>').wrap('<div class="button-wrapper" />');
    $("input.ui-button:visible:not(div.button-wrapper),button.ui-button:visible:not(div.button-wrapper)").after('<div class="button-right"></div>').wrap('<div class="button-wrapper" />');
    $("input.button-large:visible:not(div.button-large-wrapper),button-large.button:visible:not(div.button-large-wrapper)").after('<div class="button-large-right"></div>').wrap('<div class="button-large-wrapper" />');
}

所以我基本上想要选择具有适当类的所有按钮/输入,这些类是可见的,但尚未包含在包装div中。

每当我现在调用该函数时,无论它是否已经存在,都会添加div。

1 个答案:

答案 0 :(得分:1)

由于.button-wrapper是父级,因此您需要指定所选元素没有.button-wrapper父级。

// parent isn't button-wrapper-----------v --------------------------------------------------------v
$("input.button:visible:not(div.button-wrapper > input.button),button.button:visible:not(div.button-wrapper > button.button)")

其他人的概念相同。

如果选择器过长,您可以将not测试放入.not()方法中:

$("input.button:visible,button.button:visible").not(function() {
    return $(this.parentNode).hasClass( "button-wrapper" );
})...
相关问题