2014-07-18 5 views
0

저녁 모두,jQuery로 표시되는 div 안에있는 버튼

나는 가능한 한 무언가가 있기를 바란다.

데이터베이스에서 레코드를 삭제하는 데 사용하는 페이지가 있습니다.

나는 내가 원하는 것을 할 수있는 삭제 버튼이 있습니다. Delete 버튼을 클릭하면 삭제 될 내용을 확인하기 위해 div 슬라이드를 내리고 싶습니다.

슬라이드를 잘 내려서 텍스트를 추가 할 수 있습니다.

$('#delete').on('click', function() 
{ 
    $('#info').slideDown(); 
    $('#info').html('Really delete <?php echo $aid; ?>?'); 
    $('<br/><br/><input type="button" value="Sure" id="sure">').appendTo('#info'); 
}); 

$('#sure').on('click', function(e) 
{ 
    e.stopPropagation(); 
    alert('Goodbye <?php echo $aid; ?>?'); 
}); 

내가 클릭하면 이벤트를 트리거 할 수 있는지의 ID와 버튼을 걸려 :

이것은 내가 지금까지있는 것입니다. 단추를 표시 할 수 있지만 클릭하면 클릭 할 때 아무 것도 트리거하지 않습니다.

는 내가 빨리 구글을 수행하고 아무것도 나는 그것이 무엇을해야하는지에 맞는 것 같다 this question

보고에서 정지 전파을 추가했다. 이게 내가 누락 된 것이 정말 간단 할까? 아니면 할 수없는 것입니까?

또한,이 내 양식의 기본 요점은 다음과 같습니다

여기
<form name="..." action="..." method="..."> 

    // form content 

    <input name="delete" type="button" id="delete" value="Delete" tabindex="23"/> 

    <div id="info"></div> 

</form> 

fiddle for it

TIA

+2

http://learn.jquery.com/events/event-delegation/ 이벤트 위임이 필요합니다. '# sure'버튼은 클릭 수신기를 추가 할 시점에 현재 DOM에 없으므로 '$ (document) .on ('click ','# sure ', function (e) ...)와 같은 것으로 변경해야합니다. –

답변

1

입니다 당신은 이벤트를 위임 할 필요가있다.

$(document).on('click', '#sure', function(e) 
{ 
    e.stopPropagation(); 
    alert('Goodbye <?php echo $aid; ?>?'); 
}); 

업데이트 된 바이올린을 참조하십시오 http://jsfiddle.net/A8S5W/1/

1

당신이, 내가 생각 발생하는 문제는 클릭 리스너가 설정 될 때 확인 버튼이 존재하지 않는다는 것입니다.

  • 삭제 리스너 기능에서 확인 리스너 기능을 이동하는 방법에는 두 가지가 있습니다.

    $('#delete').on('click', function(){ 
        $('#info').slideDown(); 
        $('#info').html('Really delete <?php echo $aid; ?>?'); 
        $('#info').append("<br/><br/><button value='Sure' id='sure'>"); 
        $('#sure').on('click', function(e){ 
         alert('Goodbye <?php echo $aid; ?>?'); 
        }); 
    }); 
    
  • 변화를 확인 리스너는 문서

    $('#delete').on('click', function(){ 
        $('#info').slideDown(); 
        $('#info').html('Really delete <?php echo $aid; ?>?'); 
        $('<br/><br/><button value="Sure" id="sure">').appendTo('#info'); 
    }); 
    
    $(document).on('click', '#sure', function(e){ 
        alert('Goodbye <?php echo $aid; ?>?'); 
    }); 
    

전체 문서에 청취자가 매우 비효율적이기 때문에 두 번째 방법은 좀 심한입니다 듣습니다. 첫 번째 것은 jQuery를 중첩하는 것이 깨뜨릴만한 것을 요구하기 때문에 다소 심합니다. 그러나 그들은 모두 작동해야합니다.

또한 어쨌든 이벤트가 없으므로 이벤트 전파를 중지하지 않아도됩니다.