0
$("<button>")
    .addClass("radio")
    .addClass(this._getValue(lbl) ? "checked" : "")
    .attr(this._getDisableProp(lbl) ? ("disabled", "disabled") : "")
    .prop(this._getDisableProp(lbl) ? ("disabled", true) : ("disabled", false));

上記のコードでは、関数が true を返す場合にのみattrandを追加しようとしています。prop私はそれを同様にaddClass行いましたが、それは機能しませんでしattrprop

回避策はありますか?

4

4 に答える 4

3

三項演算子に基づいて複数の関数引数を選択することはできません。選択できるのは 1 つだけです。したがって、次のようにします。

$("button")
         .addClass("radio")
         .addClass(this._getValue(lbl) ? "checked" : "")
         .attr("disabled" , this._getDisableProp(lbl) ? "disabled" : "")
         .prop("disabled", this._getDisableProp(lbl) ? true : false);

ただし、「無効」属性を「」に設定しても要素は無効になるため、プロパティのみを使用することをお勧めします(プロパティによってオーバーライドされます)。

$("button")
         .addClass("radio")
         .addClass(this._getValue(lbl) ? "checked" : "")
         .prop("disabled", this._getDisableProp(lbl) ? true : false);
于 2013-04-02T04:36:15.263 に答える
0

あなたのスタイルで、

  $("<button>")
        .addClass("radio")
        .addClass(this._getValue(lbl) ? "checked" : "") 
        .prop('disabled',this._getDisableProp(lbl));

より柔軟なアプローチ、

$("<button>")
    .addClass("radio")
    .addClass(function () {
        if(this._getValue(lbl)) return 'disabled';
     }) 
    .prop('disabled',function () {
        return this._getDisableProp(lbl) ;
     });

また、プロパティを追加するためにattrとの両方を使用するのはなぜですか。のみを使用する必要があり、値は必要ありません。propdisabledpropdisabled

于 2013-04-02T04:42:34.587 に答える
0

次のようにします。

.prop("disabled", this._getDisableProp(lbl))

全体に三項演算子は必要ありません...値だけです(条件によって異なります)

disabled 属性の値が空白であっても、要素が無効になることに注意してください。これが prop を使用する理由です。

于 2013-04-02T04:17:38.890 に答える