2010-03-29 40 views
10

我想檢查一個元素是否具有類.active,如果它添加:margin-top:4px;jQuery - 只做一次

但是我只希望發生這種情況一旦,當頁面加載時,一旦檢測到類,我不想再次檢測到它並添加CSS樣式。

當某些元素被覆蓋時應用此類。

這是可能的jQuery?

回答

22

查看one事件。記錄例如:

$('#foo').one('click', function() { 
    alert('This will be displayed only once.'); 
}); 
+0

我不認爲「一個」將解決danits問題。一個人可以綁定文檔準備好嗎? – hunter 2010-03-29 15:57:31

+3

@Hunter - 操作說:'這是一個類,當某些元素被擱置時適用。'這導致我相信他希望鼠標懸停事件在某些元素上觸發一次。當然,我可能是錯的,在這種情況下,你的答案可能是要走的路。 – karim79 2010-03-29 19:57:39

+0

很棒@ karim79這工作正常:) – 2013-10-24 11:05:49

3

這將在頁面加載

$(function(){ 
    if ($("#elementid").hasClass("active")) 
    { 
     $("#elementid").css("margin-top", "4px"); 
    } 
}); 
+0

我不認爲在這種情況下「一」是必要的。使用此解決方案將起作用--- document.ready只會觸發一次。 – macca1 2010-03-29 16:00:21

2

的方式,我通常做這個火一旦是:

(function($) { 

    // my custom function to process elements 
    function myProcessFunction(context) { 

    // get context  
    context = context || document; 

    // select elements within the context, filter out already processed ones 
    // loop through remained (unprocessed) elements 
    // '.my-class' - selector for the elements I want to process 
    $('.my-class:not(.my-class-processed)', context).each(function(i.e){ 

     // mark the element as processed 
     $(e).addClass('my-class-processed'); 

     // add process code here 

    }); 
    } 

    // run myProcessFunction on document.ready 
    $(document).ready(function(){ 
    myProcessFunction(); 
    }); 

})(jQuery); 

這樣,我有:

  • 可重用功能
  • 處理元素被標記並且將不被處理下一次調用該函數時
  • 元素僅,如果指定的(例如,HTML代碼經由一個AJAX請求返回)上下文

希望這內處理幫助)