проблема события щелчка php и jquery - PullRequest
2 голосов
/ 01 февраля 2010

У меня проблемы с срабатыванием события щелчка на. Когда вызывается insertIntoInsertHolder (), он добавляет ссылку на содержимое div # swf_insert_holder - затем я создаю событие click чуть ниже. Однако событие не срабатывает.

$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     
});

Заранее спасибо!

Ответы [ 3 ]

1 голос
/ 01 февраля 2010

Следует также отметить, что обработчики событий присоединяются к существующим элементам. Поэтому, когда ваше событие «click» прикреплено к a.swf_insert_box_link, элемент должен существовать. Чтобы событие было присоединено к данному существующему селектору и для любых новых элементов, соответствующих этому селектору, пользователь live () - http://api.jquery.com/live/

0 голосов
/ 01 февраля 2010
Элемент

должен существовать до присоединения слушателей событий. Вы можете сделать это с помощью функции live () вместо click () (требуется jquery 1.3+) или связать ее при создании элемента, например:

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!!'); });
    );
}
0 голосов
/ 01 февраля 2010

Использование этого заставит его работать:

<?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 и # 2, использование live вместо клика, чтобы вы могли определить обратный вызов события до , элемент действительно существует.

...