2010-11-26 103 views
3

我有一个函数,我可以调用应用一个圆角修复'button.button,button.ui按钮,input.button和input.ui按钮',它只是添加一个div旁边该元素,然后将整个区域封装在另一个div中。问题与jquery选择器

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

$(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

因为.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"); 
})... 
+0

感谢您的帮助。不能得到第一个工作,但第二个肯定有,而且也是很多。谢谢! – 2010-11-26 15:34:01