javascript
  • jquery
  • 2016-09-24 1 views 2 likes 
    2

    Jquery로 항목을 추가하고 있습니다. 그러나 추가 한 후에는 추가 된 항목에 이벤트를 바인딩 할 수 없습니다. 다음과 같이 나는 >>요소를 추가 한 후 jquery의 추가 요소에서 이벤트 클릭이 작동하지 않습니다.

    var item = '<div id="'+newInputId+'" class="col-md-9" style="padding-right: 0px;">'; 
        item += '<input id="txtInScope" type="text" value="'+currentScopeVal+'" class="form-control" readonly="readonly"/>'; 
        item += '</div>'; 
        item += '<div id="inScopeActionDiv'+newInputId+'" class="col-md-3" style="padding-left: 2px;">'; 
        item += '<button type="button" class="btn btn-warning btn-sm remButton" title="Remove this item">Remove Item</button>'; 
        item += '</div>';  
    $('#inScopeDiv').append(item); 
    

    를 추가하고 그리고이를 추가 한 후 나는 >> 다음과 같이

    $("#inScopeDiv").delegate(".remButton", "click", function(){ 
        alert('you clicked me again!'); 
    }); 
    $('#inScopeDiv').on('click', '.remButton', function() { 
        alert("working"); 
    }) 
    $('.remButton').live('click', function() { 
        alert('live'); 
    }) 
    

    그러나 어떤 결과를 위의 remButton 클래스에 클릭 이벤트를 바인딩 할. 아무도 제발 이걸 좀 도와 줄래?

    +0

    '# inScopeDiv' 너무 동적으로 추가 : 다른 손에

    은 작업 전에 요소의 존재없이 이벤트 첨부 할 jQuery로하는 방식으로 존재한다. '문서 (document) '또는 동적으로 추가되지 않는 몇몇 부모에게 바인딩하십시오. –

    +0

    inScopeDiv는 동적이지 않습니다. inScopeActionDiv는 동적입니다. –

    답변

    1
    $('.remButton').live('click', function() { 
        alert('live'); 
    }) 
    

    JQuery와 방법 라이브가 더 이상 유효하지 않습니다

    "jQuery를 1.7로, .live() 메서드는 사용되지 않습니다 이벤트를 첨부) (CSTE 연구진 사용합니다. 이전 버전의 jQuery 사용자는 .live()보다 .delegate()를 우선 사용해야합니다. "

    출처 : jquery live

    이벤트 첨부 파일에 대한

    리틀 설명 :

    당신은 당신이 이벤트를 추가하고 싶은 대상이 방법으로 (이 경우 추가 이벤트 함수를 호출하기 전에 존재한다는 것을 깨달아야한다 on의 jQuery).

    $('html').on('click', '#inScopeDiv .remButton', function() { 
        alert('works!'); 
    }); 
    
    1

    동적 인 것이 아니라 항상 DOM에있는 부모에 바인딩합니다.

    +0

    'body'또는 'document'(u_mulder도 제안 된 것처럼)를 사용하여 시도한 적이 있습니까? –

    +0

    동적 인'inScopeDiv'를 찾을 수 있습니까? – Omnisite

    0

    당신은 당신이 항목을 추가하는 청취자 각 시간을 추가해야합니다

    $('#inScopeDiv').append(item) 
          .off() //unbind old listeners so no duplicate listeners 
          .on('click', '.remButton', function() { 
           alert("working"); 
          }); 
    
    0

    당신은 .appendTo를 사용하여 변수에 첨부 된 사업부를 저장할 수 다음 변수에 직접 클릭 이벤트를 첨부 할 수 있습니다. 작업을 참조하십시오 JSFiddle

    $(".appendDiv").click(function() { 
         var item = "<div>I'm a new div!</div>"; 
         var appended_div = $(item).appendTo(".container"); 
         appended_div.click(function() { 
           alert("Working!"); 
         }); 
    }); 
    
    관련 문제