代码之家  ›  专栏  ›  技术社区  ›  Marcogomesr

事件单击在使用jquery添加到DOM后不起作用

  •  0
  • Marcogomesr  · 技术社区  · 7 年前

    我知道这是个基本问题。我一直在玩 delegation 但结果还是一样。

      //variables
      let $questions = $('.quiz-questions');
      let $tableOptionQuestions = $('.survey-list-service');
      let $addNewOption = $('.add-option');
      let $removeOption = $('.remove-option');
      
      //events
      $addNewOption.on("click", addNewOptionFunc );
      $removeOption.on("click", removeOptionFunc );
    
      //add new option
      function addNewOptionFunc (e) {
        let $optionRow = $(this).prev().children('tbody').children('tr').first();
        $optionRow.clone().appendTo( "tbody" );
      }
      
      //remove option
      function removeOptionFunc (e) {
        let $optionRow = $(this);
        let $sizeRow = $tableOptionQuestions.find('tbody tr').length; 
        
        // if( $tableOptionQuestions.find('tbody tr').length != 1 ) {
          $optionRow.closest('tr').remove();
        // }    
        
      }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="quiz-questions">
    
      
      <section>
      <table class="survey-list-service">
        <thead>
          <tr>
            <th>Name</th>       
            <th>Action</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td><input type="text" value=""></td>
            <td><button class="button button-primary remove-option">remove</button></td>
          </tr>
        </tbody>
      </table>
      
      <button class="button button-primary add-option">Add </button>
    
      </section>
    
    </div>
    1 回复  |  直到 6 年前
        1
  •  1
  •   Nandita Sharma    7 年前

    $(document).on("click", '.add-option', addNewOptionFunc);
    $(document).on("click", '.remove-option', removeOptionFunc);
    

    //variables
    let $questions = $('.quiz-questions');
    let $tableOptionQuestions = $('.survey-list-service');
    
    //events
    $(document).on("click", '.add-option', addNewOptionFunc);
    $(document).on("click", '.remove-option', removeOptionFunc);
    
    //add new option
    function addNewOptionFunc(e) {
      let $optionRow = $(this).prev().children('tbody').children('tr').first();
      $optionRow.clone().appendTo("tbody");
    }
    
    //remove option
    function removeOptionFunc(e) {
      let $optionRow = $(this);
      let $sizeRow = $tableOptionQuestions.find('tbody tr').length;
    
      // if( $tableOptionQuestions.find('tbody tr').length != 1 ) {
      $optionRow.closest('tr').remove();
      // }    
    
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="quiz-questions">
    
    
      <section>
        <table class="survey-list-service">
          <thead>
            <tr>
              <th>Name</th>
              <th>Action</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td><input type="text" value=""></td>
              <td><button class="button button-primary remove-option">remove</button></td>
            </tr>
          </tbody>
        </table>
    
        <button class="button button-primary add-option">Add </button>
    
      </section>
    
    </div>