0

最初に私の英語を許してください、私はネイティブ スピーカーではありません。私は本当に奇妙な問題を抱えています。次の 2 つの複数選択ボックスがあります。

<select id="leftEntities" class="width390px" multiple="multiple" size="8">
   <option value="1">Option A</option>
   <option value="2">Option B</option>
</select>

<select id="rightEntities" class="width390px" multiple="multiple" size="8">
   <option value="1">Option C</option>
   <option value="2">Option D</option>
</select>

選択したオプションの反転を実行するこのボタン。

<button id="invert" class="btn btn-primary glyphicon glyphicon-transfer"></button>

これは JQuery コードです。

$(document).ready(function(){
   $('#invert').click(function() {
   SWAPLIST.invert($(this).parent().find('select'));
   });
});

var SWAPLIST = {};
SWAPLIST.invert = function(list) {
   $(list)
   .children()
   .prop('selected', function(i, selected) {
      return !selected;
   });
}

問題は、ボタンの周りに div コンテナーがない場合、これが機能するように機能することですが、ボタンの周りに div コンテナーを配置すると、機能しなくなります。

言い換えれば、これはうまくいかないものです:

<div class="sometestclass">
   <button id="invert" class="btn btn-primary glyphicon glyphicon-transfer"></button>
</div>
4

5 に答える 5

3

が選択の親でない場合$(this).parent()、機能しません

代わりにこれを試してください

Live Demo

SWAPLIST.invert($("select.width390px"));

また

SWAPLIST.invert($("select[id$='Entities']"));

完全なソリューション

$(function(){
  $('#invert').on("click",function() {
    SWAPLIST.invert($("select[id$='Entities']"));
  });
});
于 2013-09-16T11:56:22.000 に答える
1

$(this).parent()this を指しているために発生しますDIV$(this).parent().parent()または他のセレクターを使用します。

于 2013-09-16T11:55:01.137 に答える
1

この背後にある問題は次のとおりです$(this).parent()。多くの場合、それは希望どおりに計算されず、失敗につながります。

ただし、次のselect classesように html マークアップに追加する を使用することをお勧めします。

$(document).ready(function(){
   $('#invert').click(function() {
       console.log($("select.width390px"));
       //SWAPLIST.invert($(this).parent().find('select'));
       SWAPLIST.invert($("select.width390px"));
   });
});

ここで動作するフィドルを見つけてください: http://jsfiddle.net/2ceUC/1/

于 2013-09-16T12:10:39.120 に答える
0

あなたと一緒$(this)にボタンを取ります。それからparent()あなたと一緒に親に行きます。次に、を使用しfind()て、いくつかの要素を探しています。

ただし、 のdiv周りにがある場合button、親は になりますdiv。そして、そこから始めて、find失敗します。

于 2013-09-16T11:55:15.543 に答える
-1

http://jsfiddle.net/5jb3P/ を 試す

親が現在であるため、親を選択することはできません<div>

したがって、要素の選択またはIDのいずれかでアクセスする必要があります

お気に入り

$('select') or $('#leftEntities,#rightEntities')
于 2013-09-16T12:01:09.943 に答える