2016-05-28 2 views
-1

Как создать функцию jQuery one() на $(document).ready, я знаю синтаксис событий кликов и селекторов, но я не знаю, как создать функцию, которая будет работать только на готовом документе, и только один раз, с инструкциями switch в нем?jQuery одна функция

+0

Вызов функции на документ готов. Это будет работать один раз. – Marc

+0

Есть ли у вас код? '$ (SELECTOR) .on (HANDLER)' будет работать отлично ... – Rayon

+0

Событие 'ready' происходит только один раз на странице. Если вы видите дублирование, убедитесь, что весь скрипт включен только один раз. Кроме того, [jQuery $ (document) .ready() запускается дважды] (https://stackoverflow.com/questions/10727002/jquery-document-ready-fires-twice) –

ответ

0

По умолчанию функция будет выполняться только один раз, если нет слушателей событий, которые требуют более одного раза.

Ответ района не самый лучший. Поместите функцию один раз() внутри функции $ (document) .ready, чтобы она не загрязняла глобальное пространство имен. Это также обеспечивает более быстрое разрешение имени функции из-за цепей видимости JavaScript.

Поместите его снаружи, если он является многоразовым компонентом, поэтому вы можете легко переместить его в отдельный файл и вызвать из разных контекстов. Это применимо, если вы разрабатываете библиотеку или большое приложение.

$(document).ready(function() { 
 
    once(); 
 
\t function once() { 
 
    \t alert("See, this happens only once"); 
 
    }; 
 
});
<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script> 
 
<div> 
 
Test 
 
</div>

0

function one() { 
 
    alert("Once called"); 
 
} 
 

 
$(document).ready(function() { 
 
    one(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

Просто объявить функцию, как обычно, и вызывать из document.ready.

https://learn.jquery.com/using-jquery-core/document-ready/

function one() { 
    console.log("Do one"); 
} 

$(document).ready(function() { 
    one(); 
}); 
0

var handler = function() { 
 
    alert('Called!'); 
 
}; 
 
$(document).ready(function() { 
 
    handler(); 
 
    $('#elem').one('click', handler); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<div id="elem">Only Once!</div>

0

Если вы хотите быть абсолютно уверены, что функция выполняется только один раз, вы можете использовать флаг в случае его случайно называют еще раз:

var flag = false; 

function one() { 
    if (!flag) { 
     flag = true; 
     //do stuff 
    } 
} 

//.ready() 
$(function() { 
    one(); 
}); 

Если функция уникальна для одной страницы, вы можете объявить ее в вызове .ready().

0

Вы можете использовать $.Callbacks() с параметром "once"

function once() { 
 
    alert("once") 
 
} 
 

 
var callbacks = $.Callbacks("once"); 
 

 
callbacks.add(once); 
 

 
$().ready(callbacks.fire); // call `once` 
 

 
$().ready(callbacks.fire); // this will not call `once` 
 

 
$().ready(function() { 
 
    alert("do other stuff") 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> 
 
</script>

Смежные вопросы