2010-01-31 7 views
2

에 대한 클릭 이벤트를 발생시키는 데 문제가 있습니다. insertIntoInsertHolder()를 호출하면 div # swf_insert_holder의 내용에 대한 링크가 추가됩니다. 바로 아래에 click 이벤트를 만듭니다. 그러나 이벤트가 발생하지 않습니다.PHP 및 jquery 클릭 이벤트 문제

$javascript = "javascript:;"; 
$swf_insert_box_link = "swf_insert_box_link"; 

echo " 

function insertIntoInsertHolder(filename) { 
$('#swf_insert_holder').append('<a href=" . $javascript . " class=" .  $swf_insert_box_link . ">go</a>'); 
//produces: <a href="javascript:;" class="swf_insert_box_link">go</a>    
    } 

$('a.swf_insert_box_link').click(function() { 
alert('hello!!'); //for testing  
}); 

미리 감사드립니다.

+2

코드에서 많은 구문 오류가 있기 때문에이 가능하게 될 수 있을까 ? –

+2

@ Chacha102 아마도이 문제를 보여주는 좋은 대답은 더 많은 IMO를 도울 것입니다. –

답변

0

를 작동하게됩니다이 사용 :

<?php 
$javascript = "javascript:;"; 
$swf_insert_box_link = "swf_insert_box_link"; 

echo <<<JS 
function insertIntoInsertHolder(filename) { 
    \$('#swf_insert_holder').append('<a href="$javascript" class="$swf_insert_box_link">go</a>'); 
    // produces: <a href="javascript:;" class="swf_insert_box_link">go</a>    
} 

\$('a.swf_insert_box_link').live('click', function() { 
    alert('hello!!'); //for testing  
}); 
JS; 
?> 

중요한 부분이었다 # 1, 모든 PHP 구문 오류를 수정하고 클릭 대신 live을 사용하므로 앞에 전에 이벤트 콜백을 정의 할 수 있습니다.

+0

<<< JS를 시도하고 JS와 닫을 때; 내가 구문을 얻을?> 파일의 마지막 줄에 (그것의 물건을 많이 가지고있다.) <<< JS 사용할 수있는 경우 경건한 것 –

+0

@unknown 공백 (탭, 공백, 등)을 시작으로하고, 그렇지 않으면 heredoc이 종료되었음을 알 수 없습니다 (heredoc은'<<< JS ... JS;'). –

1

이벤트 처리기가 기존 요소에 연결된다는 점도 유의해야합니다. 따라서 'click'이벤트가 a.swf_insert_box_link에 첨부되면 요소가 있어야합니다. 주어진 기존의 선택과 같은 선택 일치하는 새로운 요소 연결된 이벤트를하기 위해, 사용자는() 살 - http://api.jquery.com/live/

0

요소가 있어야 이벤트 리스너를 연결할 수 있습니다. 당신은 (1.3 이상 jQuery를 필요)) (라이브 기능을 대신 클릭()와 함께 할, 또는이 같은 요소를 만드는 동안 바인딩 할 수 있습니다

function insertIntoInsertHolder(filename) { 
    $('#swf_insert_holder').append(
     $('<a>') 
      .attr('href', '<?php echo $javascript; ?>') 
      .addClass('<?php echo $swf_insert_box_link;?>') 
      .text('go') 
      .click(function() { alert('hello!!'); }); 
    ); 
}