جاوااسکریپت - چرا این تابع کلیک jQuery کار نمیکند؟
کد :
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script type="text/javascript">
$("#clicker").click(function () {
alert("Hello!");
$(".hide_div").hide();
});
</script>
کد بالا کار نمیکند. وقتی روی #clicker کلیک میکنم، هیچ هشداری نمایش داده نمیشود و همچنین مخفی نمیشود. کنسول را بررسی کردم و هیچ خطایی ندارم. همچنین بررسی کردم که JQuery بارگذاری شده است و واقعاً بارگذاری شده است. بنابراین مطمئن نیستم مشکل کجاست. همچنین یک تابع document ready با یک هشدار نوشتم و آن کار کرد، بنابراین مطمئن نیستم چه کاری را اشتباه انجام میدهم. لطفاً کمک کنید. ممنون!
پاسخ شماره ۱
شما قرار است کد جاوااسکریپت را در یک بلوک $ (document).ready(function() {}); اضافه کنید.
یعنی
$(document).ready(function() {
$("#clicker").click(function () {
alert("Hello!");
$(".hide_div").hide();
});
});
همانطور که مستندات jQuery بیان میکند: «تا زمانی که سند آماده نباشد، نمیتوان صفحه را به طور ایمن تغییر داد.» jQuery این حالت آمادگی را برای شما تشخیص میدهد. کدی که داخل $ ( document ).ready() قرار داده شده است فقط زمانی اجرا میشود که DOM صفحه برای اجرای کد جاوااسکریپت آماده باشد.
پاسخ شماره ۲
من بهترین راه حل برای این مشکل را با استفاده از ON با $ (document) پیدا کردم.
$(document).on('click', '#yourid', function() { alert("hello"); });
برای شروع با شناسه، به موارد زیر مراجعه کنید:
$(document).on('click', 'div[id^="start"]', function() {
alert ('hello'); });
در نهایت بعد از یک هفته، دیگر نیازی به افزودن تریگر onclick ندارم. امیدوارم این به بسیاری از مردم کمک کند
پاسخ شماره ۳
کد شما ممکن است بدون document.ready() هم کار کند، فقط مطمئن شوید که اسکریپت شما بعد از #clicker قرار دارد. این دمو را بررسی کنید: http://jsbin.com/aPAsaZo/1/
ایده در مفهوم آماده است. اگر مطمئن هستید که اسکریپت شما جدیدترین چیز در صفحه شما است یا بعد از عنصر مورد تأثیر قرار گرفته است، کار خواهد کرد.
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
<script src="https://code.jquery.com/jquery-latest.min.js"
type="text/javascript"></script>
<a href="#" id="clicker" value="Click Me!" >Click Me</a>
<script type="text/javascript">
$("#clicker").click(function () {
alert("Hello!");
$(".hide_div").hide();
});
</script>
</body>
</html>
توجه: در دمو jsbin در کد، http را با https جایگزین کنید، یا از این نسخه دمو استفاده کنید
