نمایش نتایج 1 تا 2 از 2

نام تاپیک: چرا Click کردن روی Element درونی، باعث فراخوانی Click روی Element بیرونی میشه؟

  1. #1

    چرا Click کردن روی Element درونی، باعث فراخوانی Click روی Element بیرونی میشه؟

    سلام
    این کد رو نگاه کنید :


    <head runat="server">
    <title>Untitled Page</title>

    <script src="JS/jq.js" type="text/javascript"></script>

    <script type="text/javascript">
    $(document).ready(function (){
    $("#main").click(function(){ alert("main")});
    $("#li").click(function(){alert("li")});
    });
    </script>
    </head>
    <body>
    <form id="form1" runat="server">
    <div style="width: 500px; height: 500px; background-color: Red" id="main">
    <div style="width: 300px; height: 300px; background-color: Blue" id="li">
    </div>
    </div>
    </form>
    </body>

    مشکل اینجاست که وقتی روی ناحیه آبی کلیک میشه هم رویداد کلیک برای main و هم برای li فراخونی میشه
    چی کار کنم که این رویداد فقط برای ناحیه ای که روش کلیک شده یعنی li(آبی) فراخونی بشه ؟

  2. #2

    نقل قول: یه مشکل با click

    نقل قول نوشته شده توسط gigil_Question مشاهده تاپیک
    سلام این کد رو نگاه کنید : مشکل اینجاست که وقتی روی ناحیه آبی کلیک میشه هم رویداد کلیک برای main و هم برای li فراخونی میشه
    چی کار کنم که این رویداد فقط برای ناحیه ای که روش کلیک شده یعنی li(آبی) فراخونی بشه ؟
    سلام.
    کافیه کدتون رو یه این شکل تغییر بدید:

    $(document).ready(function () {
    $("#main").click(function () {
    alert("main");
    });

    $("#li").click(function (e) {
    alert("li");
    e.stopPropagation();
    });
    });


    به این ترتیب، جلوی bubble شدن event رو هنگام Click روی li می گیرید و دیگه main فراخوانی نمیشه.

    موفق باشید.

    Update: اینو بگم که می تونید در درون متود click بسادگی return false کنید، (به بیان دیگه، stopPropagation رو call نکنید). نتیجه یکی هستش، اما عملا این دو روش تفاوتهایی با هم دارن...

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •