1

jQuery に問題があります。ツールチップ div を埋めるこのコードがある場合:

<div id="tooltip"></div>
<div class="tooltipMessage">Tooltip Message</div>
<script type="text/javascript">
    $("#id").html($("#tooltip").next(".tooltipMessage").html());
</script>

これは機能し、コードは次の要素を classname で取得し、tooltipMessage要素を id で埋めますtooltip

しかし、私がこのコードを持っている場合:

<div id="tooltip"></div>
<p>other element</p>
<div class="tooltipMesage">Tooltip Message</div>

undefined返されます。

tooltipMessage別の要素が途中に存在する場合、クラス名を持つ次の要素から HTML を取得するにはどうすればよいですか?

4

4 に答える 4

0

ツールチップメッセージのIDがバインドされているIDと同じプレフィックスを持つようにすることで、以前にこの問題を解決しました。その後、javascriptを次のように記述できます。

<div id="tooltip1"></div>
<div id="tooltip1Message" class="tooltipMessage>Tooltip Message</div>
<script type="text/javascript"> 
   $(".tooltipMessage").each(function(){
      var destId = $(this).attr("id").replace("Message","");
      $("#"+destId).html($(this).html());
    });
</script>

次に、メッセージがどれだけ離れていても、バインドする適切なメッセージを常に見つけます。

于 2012-12-29T17:40:08.003 に答える
0

すべての要素を親コンテナー内に配置し、find(selector) を使用して必要な要素を取得してみませんか? それははるかに優れたアプローチであり、防弾の分離が得られると思います。

あなたの質問に関しては、nextAll('div.tooltipMesage')メソッドを使用して必要な要素を見つけることができます。

于 2012-10-21T04:51:43.607 に答える
-1
.next()  -Wii get the immediate sibling 
        // Here the immediate sibling of tooltip is  p tag..
        // So it returns a empty selector because it not a immediate 
        // sibling

<div id="tooltip"></div>
<p>other element</p>
<div class="tooltipMesage">Tooltip Message</div>

EDIT したがって、それを見つけるには next を2回使用する必要があります..

$("#id").html($("#id").next().next(".tooltipMessage").html());

また

.nextAll()を使用する

$("#id").html($("#id").nextAll(".tooltipMessage").first().html());
于 2012-10-21T04:46:09.147 に答える
-4

交換

$("#id").html($("#id").next(".tooltipMessage").html());

$("#id").html($("#id").find(".tooltipMessage").html());

.next()DOM の後にあるすべてを探しているわけではありません。文字通り、次の要素.find()を取得しています。

編集:

私はそれが働いていると思います、私は質問を本当に速く読んで、HTMLがこのように見えると思いました

<div id="tooltip">
   <p>other element</p>
   <div class="tooltipMesage">Tooltip Message</div>
</div>

.find().siblings()HTML を問題のように維持することを選択した場合、すべての派生要素で機能します

于 2012-10-21T04:25:45.170 に答える