1

我有一个在表 td 中附加 2 个文本字段和一个按钮的按钮,但是问题是附加按钮的 onclick 功能不会触发。有人看到问题了吗?代码:

<script>
    $(document).ready(function(){
        $("#add").click(function() {
            $(".no_border").append("<br /><label>Co-author email:</label><input type='text' name='author_email'/><label>Co-author Level:</label><input type='text' name='author_level'/><input id='save' type='button'name='save' value='Add'/>");
    });
});
</script>
<?php
    while($row = mysql_fetch_assoc($co_authors)) {
        echo "<tr>
            <td>{$row['author_email']}</td>
            <td>{$row['coauthor_level']}</td>";
            ?><td><button class='remove' id='remove' name='remove' email="<?php echo $row['author_email'] ?>"
            paper="<?php echo $row['paper_id'] ?>">Remove</button></td>
            </tr><?
            ?><td colspan="3" class="no_border"><button class="add" name="add"></button>
            <label id="add" class="cursor_pointer"> Add more co-authors</label></td><?
    }
?>
4

3 回答 3

3

您将需要使用 jQuery.on()功能来访问在 DOM 加载后创建的元素。

可以在此处的 jQuery 手册中找到更具体的信息:http: //api.jquery.com/on/

$( document ).on( "click", "#add", function() {
    alert("aaaaaaaaaaa");
} ); 

在 jQuery < 1.7 中,以前是这样使用的:

$( "#add" ).live( "click", function( e ) {} );
于 2012-07-13T02:03:00.713 回答
2

将代码包装在 jQuery 文档ready函数中:

$(function() {
   $("#add").click(function() {
      $(".no_border").append("<br /><label>Co-author email:</label><input type='text' name='author_email'/><label>Co-author Level:</label><input type='text' name='author_level'/><input id='save' type='button'name='save' value='Add'/>");
   });
});

有关更多详细信息,请参阅:http ://api.jquery.com/ready/

或者,您可以使用.on.live.on从 1.7 开始是首选方法)。

   $(document).on('click', '#add', function() {
      $(".no_border").append("<br /><label>Co-author email:</label><input type='text' name='author_email'/><label>Co-author Level:</label><input type='text' name='author_level'/><input id='save' type='button'name='save' value='Add'/>");
   });

   $("#add").live('click', function() {
      $(".no_border").append("<br /><label>Co-author email:</label><input type='text' name='author_email'/><label>Co-author Level:</label><input type='text' name='author_level'/><input id='save' type='button'name='save' value='Add'/>");
   });
于 2012-07-13T01:58:48.793 回答
2

可能您必须使用.on.live(),它们使脚本识别$(document).ready()被调用后创建的元素。

例如:

在 jQuery 1.7 之前

$("#add").live("click", function() {
    ...

jQuery 1.7 及更高版本

$("#add").on("click", function() {
    ...
于 2012-07-13T02:00:44.690 回答