2012-04-30 32 views
1

我想,當一個div的風格變化從display: none;display: block;如果div顯示樣式從無變爲塊,如何執行jQuery代碼?

我使用的標籤,這就是爲什麼查看該選項卡時,這個div的樣式更改這樣的,這jQuery代碼應該只運行執行jQuery代碼只。

那麼我該如何做到這一點?

謝謝。

編輯:我試過.is(':visible');它只適用於如果我們加載頁面,這個div是可見的,而不是如果這個div將在以後可見。

+2

爲什麼不在用戶點擊另一個選項卡時執行代碼? – Celos

+0

是的,也許這會工作,但我想知道是否有可能使用jQuery來做到這一點,聽到什麼時候發生的事情? – Pierre

+0

@Alnitak好了,所以我想我必須按照賽洛斯上面的建議來做。 – Pierre

回答

2

你正在尋找的是DOM Mutation Events,它可以在插入,刪除或修改DOM元素時引發事件。

不幸的是,他們從來沒有得到很好的支持,並且were deprecated in DOM3

在任何情況下(無雙關語意思),在你的情況下,只要捕捉任何UI事件就會使標籤顯示出來就簡單了。

1
if($("#myTab").is(':visible')){ 
    here is your code ... 
} 
+0

從你的'可見'psuedo選擇器缺少冒號 –

+0

))thanx,我錯過了它 – jumancy

+0

不用擔心,認爲它只是一個錯字。 :) –

-1
$(document).ready(function(){ 
    $(your tab container).click(function(){ 
     //set none property to all of your id's 
     var obj=$this; 
     if(obj){ 
      $("your id").style.display="block"; // set block to your current item 
     } 
    }); 
}); 

if($("you id").is('visible')){ 
    //do it 
} 
+0

jQuery對象是否可以訪問'style'屬性?我認爲它不好。所以'$(「你的id」)。style.display =「block」;'不起作用。 (0).style.display =「block」你可以將它改爲'$(「your id」)[0] .style.display =「block」;' ;''或者使用jQuery對象本身:'$(「your id」)。attr('style','display:block');'或類似的東西 –

+0

上面的註釋是正確的。您提供的代碼會引發語法錯誤。 – rlemon

2

嘗試這樣的事:

if($(DIV).is(':visible')) { // DIV => valid selector of your target 
    // execute your code 
} 

OR:

if($('body').on('EVENTNAME', 'DIV:visible')) { // DIV => valid selector of your target 
    // execute your code 
} 
+0

OP似乎想要引發事件,而不是測試可見性 – Alnitak

相關問題