I have the following function...Inside $(document).ready().This function won't work unless it is put outside document.ready().Any ideas?
это звучит, как вы вызываете функцию из атрибута onXyz
, как это:
<div onclick="fav('radius')">...</div>
функция называется таким образом, должна быть Глобал, но при объявлении функции внутри ready
обратного вызова, это не является глобальным, он распространяется до ready
обратного вызова.
Лучше всего избегать создания глобалов, что является одной из причин не использовать атрибуты onXyz
для подключения событий. Вместо этого:
<div id="radius">...</div>
..., а затем в ready
:
$("#radius").on("click", function() {
fav('radius');
});
... или аналогичный.
Вам не обязательно указывать эти id
s, и на самом деле вы можете использовать один и тот же обработчик для нескольких из них. например:
<div class="control" data-type="radius">...</div>
<div class="control" data-type="transform">...</div>
<!-- ... -->
затем
$(".control").on("click", function() {
fav(this.getAttribute("data-type"));
// Or:
// fav($(this).attr("data-type"));
// But not .data(), that's for something else, not for just accessing data-* attributes
});
Обратите внимание, что вам не нужно ready
функцию вообще в большинстве случаев. Просто поместите выражение функции инлайн вызываемых в конце документа, непосредственно перед закрывающими </body>
тегом:
<script>
(function() {
$(".control").on("click", function() {
fav(this.getAttribute("data-type"));
// Or:
// fav($(this).attr("data-type"));
// But not .data(), that's for something else, not for just accessing data-* attributes
});
})();
</script>
</body>
</html>
Вам действительно нужен только ready
обработчика, если вы не контролируете, где script
теги идут.
Итак, почему вы хотите поместить его в псевдо-готовый обработчик? Я думаю, вы столкнулись с проблемой объема, проверьте консоль на наличие ошибок –