簡體   English   中英

如何從父元素中刪除事件,並僅為其特定的子元素啟用該事件?

[英]how to remove an event from a parent element and only enable that event for its particular child element?

我想要使​​用class =“cash”禁用li元素的click事件,但同時我希望為其中一個子元素啟用click事件with class =“pay-button”/ *這是我正在使用的腳本在腳本標記* /

    <script>
          (function(){

            // Append a close trigger for each block
            $('.menu .content').append('<span class="close">x</span>');     
            // Show window
            function showContent(elem){
                hideContent();
                elem.find('.content').addClass('expanded');
                elem.addClass('cover'); 
            }
            // Reset all
            function hideContent(){
                $('.menu .content').removeClass('expanded');
                $('.menu li').removeClass('cover');     
            }

            // When a li is clicked, show its content window and position it above all
            $('.menu li').click(function() {
                showContent($(this));
            }); 


            // When tabbing, show its content window using ENTER key
            $('.menu li').keypress(function(e) {
                if (e.keyCode == 13) { 
                    showContent($(this));
                }
            });

            // When right upper close element is clicked  - reset all
            $('.menu .close').click(function(e) {
                e.stopPropagation();
                hideContent();
            });     
            // Also, when ESC key is pressed - reset all
            $(document).keyup(function(e) {
                if (e.keyCode == 27) { 
                  hideContent();
                }
            });

          })();

/*This is HTML code */

    <ul class="menu">
        <li tabindex="1">
          <span class="title">One</span> 
          <div class="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse interdum dictum scelerisque. Morbi eu euismod lorem.</div>
        </li>
        <li tabindex="1">
          <span class="title">Two</span> 
          <div class="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse interdum dictum scelerisque. Morbi eu euismod lorem.</div>
        </li>
        <li tabindex="1">
          <span class="title">Three</span> 
          <div class="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse interdum dictum scelerisque. Morbi eu euismod lorem.</div>
        </li>
        <li tabindex="1">
          <span class="title">Four</span> 
          <div class="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse interdum dictum scelerisque. Morbi eu euismod lorem.</div>
        </li>
        <li tabindex="1" class="cash">
          <span class="title">Five</span>
          <table>
           <tr>
            <button class="pay-button" id="pay">Pay</button>
          </tr>
          <tr>
            <td>
              <label>Token No.</label>
              <input type="text"/>
            </td>
          </tr>

          </table>
          <div class="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse interdum dictum scelerisque. Morbi eu euismod lorem.</div>  
        </li>

        <li tabindex="1">
          <span class="title">Six</span> 
          <div class="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse interdum dictum scelerisque. Morbi eu euismod lorem.</div>
        </li>
        <li tabindex="1"> 
          <span class="title">Seven</span>
          <div class="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse interdum dictum scelerisque. Morbi eu euismod lorem.</div>
        </li>
        <li tabindex="1"> 
          <span class="title">Eight</span>
          <div class="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse interdum dictum scelerisque. Morbi eu euismod lorem.</div>
        </li>
        <li tabindex="1"> 
          <span class="title">Nine</span>
          <div class="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse interdum dictum scelerisque. Morbi eu euismod lorem.</div>
        </li>     
      </ul>

試試這個父元素:

$("li.cash").off("click");

並為子元素:

$("li.cash button.pay-button").on("click", function(event) {
    event.preventDefault(); //optional(depends on case)
    event.stopPropagation();

    //do stuff here
});
first function to unbind click event of parent

    $('.menu li.cash').unbind('click');
then second function to bind click event to chile element, and inside it we call showContent() method of parent again   

    $("#pay").bind('click',function () {
        showContent($('.menu li.cash'));
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM