php和jquery点击事件问题

时间:2010-01-31 23:43:14

标签: php jquery click

我在点击事件时遇到问题。 当调用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 个答案:

答案 0 :(得分:1)

还必须注意,事件处理程序附加到现有元素。因此,当您的'click'事件附加到a.swf_insert_box_link时,该元素应该存在。为了将事件附加到给定的现有选择器以及与同一选择器匹配的任何新元素,用户live() - http://api.jquery.com/live/

答案 1 :(得分: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语法错误和#2,使用live而不是单击,这样你就可以在元素实际存在之前定义事件回调

答案 2 :(得分:0)

在附加事件侦听器之前,

元素必须存在。你可以使用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!!'); });
    );
}