0

私の機能を見てください:

$(".select-default").on("click", function() {
    $(".dropdown-menu li a").on("click", function() {
      var x = $(".select-default label").children()[0];
      $(".select-default label").text($(this).text()+x);
    });
  $(this).off("click");
 });

x が undefined を出力する理由を理解しようとしていますが、実際の子ノードを出力すると予想されます。

<span class="caret"></span>

編集。マークアップは次のとおりです。

<ul class="select-default select-sm dropdown-toggle" data-toggle="dropdown">
<label for="select" id="select_value">Select Action <span class="caret"></span></label>
<ul class="dropdown-menu" role="menu">
<li><a href="#">Value 0</a></li>
<li><a href="#">Value 1s</a></li>
<li><a href="#">Value 2</a></li>            
<li><a href="#">Value 3</a></li>

ラベル内にネストされたスパンノード全体を取得し、クリックしたタグの値と結合しようとしています。x が印刷されているはずです:

<span class="caret"></span>
4

3 に答える 3

1

$(".select-default label").children()[0]undefined見た目から、label子としてテキストノードがあるため、返されます。要素のテキスト ノードは では選択されません.children()。代わりに、 を使用して要素$(".select-default label").text()のテキストを取得できます。label

$(".select-default").on("click", function() {
    $(".dropdown-menu li a").on("click", function() {
        var a = $($(".select-default label").contents().get(0));
        a.replaceWith($(this).text())
    });
    $(this).off("click");
});

デモ:フィドル

于 2013-09-13T12:09:06.703 に答える
0

これはうまくいくかもしれません:

  $(".dropdown-menu li a").on("click", function(e) {
      e.preventDefault();
      var $label = $(".select-default").children("label");
      $label.text($(this).text());          
  });

ここで働くフィドル:http://jsfiddle.net/uaqHg/2/

于 2013-09-13T13:21:02.103 に答える
0

答えは簡単でした。

append(x) を使用します。交換:

$(".select-default label").text($(this).text()+x);

と:

$(".select-default label").text($(this).text()).append(x);

とにかくありがとう。

于 2013-09-13T12:28:12.757 に答える