2010-11-26 164 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