0

私は次のコードを持っています:

<div id="accordion">
    <h3>Row 1</h3>
    <div id="1"></div>
    <h3>Row 2</h3>
    <div id="2"></div>
    <h3>Row 3</h3>
    <div id="3"></div>
</div>

$("#accordion").accordion({
    autoHeight: false,
    clearStyle: true,
    active: 0,
    change: function(event, ui) {
    $("div#2").append('<p>Test</p>');
    }
});

アコーディオンが別の行でクリックされたときに、<div id="2">データを入力したい。変更イベントで私はこれを試しています:

$("div #2").append('<p>Test</p>');

しかし、テキスト「Test」は、div ではなく h3 内に印刷されます...どうすれば div にテキストを印刷できますか?

私はjquery 1.9.0を使用しています

バグのようですhttp://bugs.jqueryui.com/ticket/4469#comment:4ですね。

4

3 に答える 3

2

属性に設定した値をやり直す必要がありidます。試す:

<div id="accordion">
    <h3 id="header1">Row 1</h3>
    <div id="content1"></div>
    <h3 id="header2">Row 2</h3>
    <div id="content2"></div>
    <h3 id="header3">Row 3</h3>
    <div id="content3"></div>
</div>

そうすれば、次のいずれかを簡単にターゲットにできます。

$("#content2").append('<p>Test</p>');

(または実際に使用.append()

これは、id実際に必要な要素をターゲットにするために、属性が一意である必要があるためです。jQuery は、最初に見つかった要素をdocument.getElementById返すネイティブ メソッドを使用します。id

アップデート:

新しい編集ごとに、スペースなしでセレクターを使用する必要があります。

$("div#2").append('<p>Test</p>');

divセレクターの部分を含める必要はありませんが。使用するだけです:

$("#2").append('<p>Test</p>');

HTML5 では をid数字で始めること (および 1 文字の長さ) を許可していますがid、前に述べたように、「content1」など、よりわかりやすいを使用することをお勧めします。

更新 2:

もう一度見てみると、 「2」の$("div #2")要素. 技術的には、そのセレクターは機能するはずです。それでもなお、数値ではなく、より説明的なセレクターをお勧めします。id<div>

とにかく、あなたのコードでは、より説明的なセレクターで動作するようになりました: http://jsfiddle.net/BrRPz/2/

于 2013-04-12T02:40:32.067 に答える
0

試す$("div#2").append('<p>Test</p>');

$("div #2")は要素id='2'内の<div>要素をターゲットにしますが、 は を$("div#2")ターゲットに<div>id='2'ます。

于 2013-04-12T02:47:52.480 に答える
0

css では、id セレクターは一意の要素です。ページ内で同じ ID を繰り返さないでください

<div id="accordion">
    <h3 id="1">Row 1</h3>
    <div class="1"></div>
    <h3 id="2">Row 2</h3>
    <div class="2"></div>
    <h3 id="3">Row 3</h3>
    <div class="3"></div>
</div>

スクリプトを次のように使用します

$("div.2").append('<p>Test</p>');

注: id セレクターは一意の要素です。

于 2013-04-12T02:41:31.770 に答える