2

実際には2つの質問:

私は次のようにjQueryの省略形IF-ELSEが好きです:

var some == true ? "it's true" : "it's false";   

対応するIF-THENはありますか?これは次の理由によるものです。

   var some == true ? "it's true" 

動作しないようです。

また、このようなものは通常のjQueryでチェーン可能ですか?そのようです:

  some.addClass("hello")
      .find(".other").css("width","100px").end()
      // chained if
      .hasClass("one") ? some.css("border","1px solid red")
      .removeClass("hello")

さて、それはいいですね。これは可能ですか?

4

3 に答える 3

4

それは可能です(割り当ては単一の=を使用し、2つは条件用です)が、投稿したように最初の1つが真の場合、一部は常に真になります。

var some = true || "it's true"; 

filter('.one')いいえ、あなたの例は連鎖可能ではありませんが、クラス1を含む要素がある場合、連鎖を継続するhasClassを置き換えることができます。

some.addClass("hello")
      .find(".other").css("width","100px").end()
      .filter('.one').css("border","1px solid red")
      .removeClass("hello")
于 2012-04-13T12:02:01.560 に答える
4

参照している省略形のIF/ELSEは三項演算子と呼ばれ、IF / ELSEステートメントと同じように連鎖可能ではなく、jQueryメソッドとして連鎖可能でもありません。また、使用にはいくつかの制限があります。ただし、次のように、一方を他方の内側に配置します。

some == true ? someMore == true ? "it's true" : "it's false" : "it's false";

次のこともできます。

some == true ? "it's true" : null;
//or
some == true ? "it's true" : undefined;

これは何かを返すので、通常は次のように使用されます。

var some = someVar==true ? "it's true" : "it's false";

言い換えれば、あなたは次のことができます:

var some = $(some).length ? 
             $(some).is('.one') ?
               some //some exists and have the class .one
             :
               return someOtherVar or function //some does not have the class .one
           :
             undefined //some does not have a length
           ;

これと同様のことを行うこともできます。三項を使用するには、さまざまな方法があります。

$(div)[somevar==true ? fadeIn : fadeOut](300);

それ以外に、if / elseを実行するための多くのものがある場合は通常より適切であり、if / else / elseifチェックを多く実行する場合は、スイッチ/ケースの方がおそらく優れています。

于 2012-04-13T12:18:22.017 に答える
0

ifjQuery でロジックをチェーンできるようにするプラグインがいくつかあります-

http://outwestmedia.com/jquery-plugins/conditional/

$('div')
    .If('hasClass', 'myClass')
        .css('color', 'red')
    .Else('hasClass', 'anotherClass')
        .css('color', 'green')
    .Else()
        .css('color', 'blue');

http://benalman.com/projects/jquery-iff-plugin/

function my_test( x ) {
  return x === 'bar';
};

$('div')
  .append( '1' )
  .iff( my_test, 'foo' )
    .append( '2' )
    .end()
  .append( '3' );
于 2012-04-13T12:39:59.720 に答える