JQuery - делать только один раз

Я хочу проверить, имеет ли класс класс .active, если он добавляет: margin-top: 4px;

Однако я хочу, чтобы это произошло один раз, когда страница загружается, как только класс был обнаружен, я не хочу его снова обнаруживать и добавлять стиль CSS.

Этот класс применяется, когда некоторые элементы зависнут.

Возможно ли это в jQuery?

Ответ 1

Просмотрите one событие. Документированный пример:

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

Ответ 2

Это будет срабатывать один раз при загрузке страницы

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

Ответ 3

Как обычно я это делаю:

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

Надеюсь, что это поможет)