我有一个函数,我可以调用将圆角修复应用于'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。
答案 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" );
})...