3

jquery新しく置き換えられたタグでセレクターが機能しない理由。

ユーザーが をクリックするsubmitResult buttonと、サーバー側が id="content" の新しい div を返し、jquery を使用しreplaceWith()て古いものを置き換えました。

要素が置き換えられた後id="content"、次に submitResult をクリックしたときに、データがサーバー側に送信されないことに気付きました。参考までに、この submitResult id は新しく置き換えられた要素内にあります。

$("#submitResult").click(xxx)replace htmlタグを更新して、再び機能させる方法を教えてもらえますか?

ありがとう

<html>
<head>
<script src="js/jquery/jquery-1.7.2.min.js"></script>
<script>
    function handleData(data, status) {
        $("#content").replaceWith(data);
    };

    $(document).ready(function() {
        $("#submitResult").click(function() {
            var $result = $("#result").val();
            $.get("e?result=" + $result, handleData);
        });
    });
</script>
</head>

<body>
        <div id="content">
            <div class="resultbox">
                    <input id="result" type="text" value=""></input>
                    <input id="submitResult" type="button" value="Submit"></input>
            </div>
        </div>

        <!-- other content -->

</body>
</html>
4

5 に答える 5

9

変化する

$("#submitResult").click(function() {

$(document).on("click", "#submitResult", function() {
于 2013-03-16T05:58:18.083 に答える
2

$("#submitResult")セレクターを呼び出したときに存在する要素を返します。

.on()イベント ハンドラーを固定の親要素にアタッチし、それを子に委任するには、のイベント委任構文を使用する必要があります。

$('body').on('click', '#submitResult', function() {
    ...
于 2013-03-16T05:58:52.950 に答える
1

jQuery の動的要素に .on を使用する

jQuery イベントは、ページの読み込み中に読み込まれた要素に対してのみ機能します。

動的に発生する要素でイベントを実行したい場合は、.liveまたはを使用する必要があります.on

しかし.live非推奨です。

于 2013-03-16T06:01:12.040 に答える
0

onの代わりに使用しclickます。

$(document).ready(function() {
    $("#submitResult").on('click', function() {
        var $result = $("#result").val();
        $.get("e?result=" + $result, handleData);
    });
});
于 2013-03-16T05:57:49.730 に答える
0

これは、ajax を使用して HTML コンテンツを返す場合の一般的なシナリオです。$(document).ready のときにハンドラーを古い送信ボタンにバインドしますが、新しく返されたボタンには何もバインドされません。したがって、ajax が返された後にイベント バインディング js を明示的に呼び出すか、コンテンツ div 内にタグを配置するだけです。

これにより、ajax が戻った後にイベント バインディングが再度実行されるようになります。

于 2013-03-16T06:07:06.767 に答える