-2

mouth.htmlとnose.htmlという2つの異なるページがあります。mouth.htmlから名前を取得したいです。したがって、ユーザーがnose.htmlにアクセスすると、muse.htmlからnose.htmlに場所の名前が出力されます。Javascriptでそれを行うにはどうすればよいですか?

これは mouth.html のコードです

 <h1 class="man" style="clear:both;">{{ moot.name }}</h1>

ノーズ.htmlで、これを試しましたが、うまくいきません

<script language="javascript">
   $("h1.man").load("mouth.html",function(data){
       var value=$(data).find("h1.man").attr("man")
   });

</script>

ノーズ.htmlの完全なコード

 <head> 
   <script language="javascript">
       $.get( 'mouth.html', function( data ) {
        var mootName = $(data).text();
      // Do something with mootName here
      alert(mootName);
   });
    </script>
  </head>
  <body>
  <form action="." method="POST">
{% csrf_token %}

    <div class="post-fed">
<p><label for="id_event_date">Event date:</label><input type="text" name="event_date" id="id_event_date" /><span class="helptext">E.g 2012-01-00.YYYY/MM/DD</span></p>
<p><label for="id_end_date">End date:</label><input type="text" name="end_date" id="id_end_date" /><span class="helptext">E.g. 2012-01-00.YYYY/MM/DD</span></p>
<p><label for="id_event_information">Event information:</label><textarea id="id_event_information" rows="10" cols="40" name="event_information"></textarea><span class="helptext"> E.g. eating etc</span></p>
<p><label for="id_full_name">Full name:</label><input id="id_full_name" type="text" name="full_name" maxlength="100" /></p>
<p><label for="id_e_mail">Email:</label></th><td><input id="id_e_mail" type="text" name="e_mail" maxlength="100" /></p>
<p><label for="id_phone_no">Phone no:</label></th><td><input id="id_phone_no" type="text" name="phone_no" maxlength="100" /></p>
<input type="submit"  class="put" value="Send"/> 

</form>  
</div>
</body>
4

3 に答える 3

1

.find子孫ノードのみに一致します。あなたh1はツリーの一番上にあります。.filter('h1.man')一致する最上位ノードを取得するために使用できます。

ただし、コールバックは、挿入されたばかりの最上位の要素 ( に渡されたノードを使用this)ごとに 1 回呼び出されることに注意して<h1>ください。

var value = $(this).attr(...);

これは、ダウンロードされたコンテンツの別のメモリ内コピーを作成するだけな$(data)ので、HTML 文字列を使用して呼び出すよりもはるかに効率的です。$(data)

ドキュメントを正しく理解している場合は、既存の要素.load()も呼び出す必要があります。これは、ロードされた HTML指定された要素に挿入し (既存のコンテンツを置き換える)、最初に指定された要素を置き換えないためです。h1.man.load()

これは、この親には要素のみが含まれている必要があることも意味しh1.man、必要なものは HTML であることを示唆しています。

<div id="h1_man_cont"><h1 class="man"> ... </h1></div>

およびJS:

$('#h1_cont_man').load('mouth.html', function(data) {
    var value = $(this).attr(...);
});
于 2013-03-27T23:06:57.893 に答える
1

次のように要素を直接ロードできます。

$('h1.man').load('mouth.html h1.man');

http://api.jquery.com/load/を参照してください。

編集:

MichaelGeary が指摘したように、これは要素もコピーしますが、これは望ましくありません ( <h1><h1></h1></h1>)。これはより良いでしょう:

$.get('mouth.html', function(data) {
    var newText = $(data).find('h1.man').text();
    $('h1').text(newText);
});
于 2013-03-27T23:06:11.203 に答える
0

ここでのさまざまな回答とコメントからわかるように、私たちは皆、あなたがやろうとしていることについて少し混乱しています. では、これを 2 つの別々の問題に分けて、それぞれを別々に見てみましょう。

最初の問題はもう少し明確です。コンテンツを取得して、そこからデータを取得したいとしますmouth.htmlmouth.htmlこの Django テンプレートから生成されたファイルです。

<h1 class="man" style="clear:both;">{{ moot.name }}</h1>

これがテンプレート全体です。<html>何もありませ<body>ん。

したがって、たとえば、Python 変数moot.nameが「Mike」の場合、の内容全体は次のようにmouth.htmlなります。

<h1 class="man" style="clear:both;">Mike</h1>

次に、このファイルをロードして、そこから "Mike" (または何でも) を取得します。次のように実行できます。

$.get( 'mouth.html', function( data ) {
    var mootName = $(data).text();
    // Do something with mootName here
});

仕組み:タグ$(data)全体<h1>を jQuery オブジェクトとして提供し、そこ.text()から内部のテキスト コンテンツを取得します。

次の部分では、その名前をどうするか? それを理解するか、やりたいことをもっと詳しく説明する必要があります。その部分はまだ明確ではないからです。

于 2013-03-27T23:26:42.270 に答える