4

朝の人々。動的に生成されたコンテンツで JavaScript または jquery を機能させる方法。

基本的に、ユーザーがナビゲーション メニューをクリックした内容に基づいて、コンテンツを生成する Web ページを作成しました。

私が直面している問題:

  1. メイン ページが content-page からコンテンツを生成する場合、jquery または javascript は機能しません。
  2. しかし、コンテンツページだけを開くと、すべてが機能します。

検索により収集される情報:

jQuery.load() メソッドは、動的に生成されたコンテンツに付随する script タグを無視します。

だから私は次のことを試します:

  1. コンテンツページではなく、メインページに必要なタグを配置します。うまくいきません。動的に生成されるため、jquery は content 要素を見つけることができないようです。
  2. jQuery.load() は script タグを無視するので、w3schools.com が xmlhttp の方法でコンテンツを生成する方法のように、純粋な javascript ajax を試しました。うまくいきません。
  3. ボタンがクリックされたとき。コンソールに応答がありません。

contact.php

<script type="text/javascript">
$(function() {
    $("#submitUser").click(function(e) {
    var fname = $("#fname").val();
    $("#theresult").text(fname);
    e.preventDefault();
});
});
<form id="contactForm"> 
<label for='fname' >First Name</label><br/>
<input id="fname" type="text" name="fname" maxlength="100" />
</form>
<div id="theresult"></div>

この contact.php を別のページに動的に生成すると動作しません。「送信」ボタンをクリックしても、コンソールに応答がありません。jqueryが存在しないようです。
しかし、ブラウザで単独で開くと機能します。

4

4 に答える 4

12

動的に生成された要素の場合、イベントをデリゲートする必要があります。次のonメソッドを使用できます。

$(function() {
    $(document).on('click', '#submitUser', function(e) {
       var fname = $("#fname").val();
       $("#theresult").text(fname);
       e.preventDefault();
    });
});

live()メソッドは非推奨です

于 2012-08-18T20:53:19.417 に答える
2

あなたの質問はあまりよく説明されていないので、ここで暗闇の中で野生の突き刺しますが.click()、ページに動的に読み込まれるものにイベントをバインドするなどを使用しようとしている可能性がありますか?

もしそうなら、おそらく.on()代わりに見たいと思うでしょう。

于 2012-08-18T20:37:43.293 に答える
1

動的に生成されたフィールドには、.on() JQuery メソッドを使用します。

$(document).on('click', '#MyID', function(e) {
    e.preventDefault(); // or you can use "return false;"
});
于 2013-06-06T08:33:00.527 に答える
1

ライブイベントを使用する必要があります。

例として、生成されたコンテンツにクリック イベントが含まれている場合、次のようにすることができます。

$(".something").live("click", function({ 
// do something
)};
于 2012-08-18T20:40:19.697 に答える