簡體   English   中英

對於動態創建的元素,僅將一次單擊事件綁定一次

[英]bind a click event only once for dynamically created elements

更新: 小提琴示例

該代碼將通過選擇框動態創建文本鏈接。 如何將一次click事件與其綁定一次,以便每個動態創建的鏈接僅將數據添加到表一次。 我曾嘗試.one從方法之一off ,但它無法正常工作。

碼:

 $(function (){
  $('.area').each(function(){
   var area = $(this),
       selectbox = area.find('select'),
       show = area.find('.show'),   
       dialog_open =  $(this).find(".dialog_open");


    selectbox.change(function(){
      selectbox = $(this).find('option:selected').text();
      show.html('<a href="#" onclick="javascript: return false" class="dialog_open">'+selectbox+'</a>')
    });

    var foo = function() {
    var dialog_open_text = $(this).find(".dialog_open").text();
      $('td').html(dialog_open_text);
    };

    show.on( "click",dialog_open, foo );

    show.off( "click", dialog_open, foo );

  });

});

HTML:

<div class="area">
    <select>
        <option>Choose</option>
        <option>One</option>
        <option>Two</option>
    </select>
    <div class="show">
    </div>
</div>

<div class="area">
    <select>
        <option>Choose</option>
        <option>One</option>
        <option>Two</option>
    </select>
    <div class="show">
    </div>
</div>

<table>
    <thead>
        <tr>
            <th>Title 1</th>
            <th>Title 2</th>
            <th>Title 3</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
    </tbody>
</table>

更改

show.on( "click",dialog_open, foo );

show.off( "click", dialog_open, foo );

show.one( "click",dialog_open, foo );

的jsfiddle

jQuerys 一個會附加一個事件處理程序被調用一次之后,將脫離本身。

暫無
暫無

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

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