1

2つのテキストフィールドを追加するボタンとテーブルtdのボタンがありますが、問題は、追加されたボタンの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

.on()DOMのロード後に作成された要素にアクセスするには、jQuery機能を使用する必要があります。

より具体的な情報は、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を使用することもできます(.on1.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()

例えば:

jQuery1.7より前

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

jQuery1.7以降

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