2012-10-24 6 views
0

jQuery click() 함수에 문제가 있습니다.jquery click()이 작동하지 않습니다.

이 함수를 사용하여 새 객체를 데이터베이스에 추가하는 ajax 함수를 호출하는 링크를 프로그래밍 방식으로 클릭합니다.

양식을 제출할 때 새로운 링크가있는 새 개체의 개체 데이터 테이블에 tr이 추가되고이 새 링크를 프로그래밍 방식으로 클릭하여 개체 속성을로드하고 표시하려고합니다.

문제는 td와 링크가있는 새로운 tr이 DOM에 없으며 $.('#elem').click') 함수가 작동하지 않는다는 것입니다.

내가 다른 사람에서 본 내가이 같은 새로운 CSTE 연구진은 기능을 클릭 이벤트를 바인딩해야한다는 게시 :

$('#parent-items').on('click', 'elem', function() { 
    // [...] 
}); 

것은 내가 대신 쓸 필요가 모르는 [...] 실제로, 당신의 도움이 하드

+1

'elem'은 요소가 아니며 그 id는 –

+0

입니다.'[...]'를'alert ("hi there")'로 대체하십시오. 그러면'$ ('# myelem') .call()'에 대한 호출이 작동하는지 확인할 수 있습니다. 일단 그것이 확실하다면, 경고를 ajax 함수 호출로 대체하십시오. – dnagirl

답변

1

하지 않는

$('#myelem').click(); 

감사 : 내 자바 스크립트 코드의 끝에서,이 같은 클릭 함수를 호출합니다. :)

<table id="list"> 
    <tr> 
     <td>John</td> 
     <td><a class="btn-hi">Say Hi!</a></td> 
     <td><a class="btn-bye">Say Goodbye!</a></td> 
    </tr> 
    <tr> 
     <td>Lucy</td> 
     <td><a class="btn-hi">Say Hi!</a></td> 
     <td><a class="btn-bye">Say Goodbye!</a></td> 
    </tr> 
    <tr> 
     <td>Sam</td> 
     <td><a class="btn-hi">Say Hi!</a></td> 
     <td><a class="btn-bye">Say Goodbye!</a></td> 
    </tr> 
</table> 

<script> 
$('#list').on('click', 'a', function() { 
    // Wrap the clicked <a> element with jQuery 
    var $this = $(this); 

    // Get the parent <tr> element 
    var $tr = $this.closest('tr'); 

    // Get all (direct) children elements (<td>) that are inside the current <tr> element 
    var $tds = $tr.children(); 

    // Get the text from the first <td> element in the current row 
    var name = $tds.eq(0).text(); 

    // Get the type (class name) of clicked link 
    var type = $this.attr('class'); 

    if (type == 'btn-hi') { 
      alert('Hi, ' + name + '!'); 
    } else if (type == 'btn-bye') { 
      alert('Goodbye, ' + name + '!'); 
    } 
}); 
</script> 

가 JSBin이 데모에서보세요 : http://jsbin.com/welcome/38776/edit

사용자가 <table id="list"> 요소 안에있는 <a> 요소를 클릭하면 클릭 이벤트가 때마다 실행 얻을 것이다. "이벤트 위임"이라고합니다 - http://api.jquery.com/delegate/

동적으로 테이블에 행을 추가하면 모든 작업이 계속 수행됩니다.

+0

그것은 좋은 데모이지만, 아마 그의 셀렉터를 사용해야합니다. –

+0

답장을 보내 주셔서 감사합니다. 아약스를 성공, 오류 등으로 호출하는 대신 click 함수를 호출하여 직접 아약스 함수를 호출하고 싶습니다. – user1069516

+0

@ user1069516 예,'alert()'가 실행되는'$ .ajax()'코드를 작성합니다. :) – Taai

관련 문제