1

jQuery プロトタイプは初めてです。私はこの同じコードを何度も実行します:

   $message
        .removeClass()
        .addClass("message error")
        .show()
        .html('<li>' + json.Errors.join('</li><li>') + '</li>');

ここでの変数は、「エラー」と html データです。成功の場合、addClass は「メッセージ成功」になります。

これら 4 つを 1 つの関数に結合し、その関数を呼び出して成功/エラーとデータを渡す方法はありますか?

4

2 に答える 2

4

独自の jQuery 関数を追加するのは簡単です。

$.fn.showErrors = function() {
  return this.removeClass().addClass("message error").show()
    .html('<li>' + json.Errors.join('<li>'));
};

それで:

$message.showErrors();

</li>終了タグは実際には必要ないことに注意してください。

一般に、そのように のプロパティとして追加された jQuery 関数は、現在の jQuery オブジェクトを参照する$.fn必要があります。thisjQuery の通常の連鎖動作が機能するように、関数はその値を返す必要があります。少しややこしいのは、thisすでにjQuery オブジェクトであるため、再度ラップする必要がないということ$(this)です。つまり、別の言葉で記述する必要はありません。

編集— 申し訳ありませんが、私はインターネットから少し離れていました (衝撃的です!) そのコードは、「json」がただ浮かんでいるだけであると想定しています。それはおそらくパラメータであるべきです:

$.fn.showErrors = function(json) {
  return this.removeClass().addClass("message error").show()
    .html('<li>' + json.Errors.join('<li>'));
};

それを呼び出すには:

$message.showErrors(json);
于 2012-10-06T14:24:28.087 に答える
0
jQuery.fn.updateErrors = function(errors) {
  var cssClass, errorsHtml;

  if(errors.length === 0) {
    cssClass   = "success";
    errorsHtml = "";
  } else {
    cssClass = "error";
    errorsHtml = "<li>" + errors.join("</li><li>") + "</li>";
  }

  return this.removeClass().addClass("message " + cssClass)
             .show().html(errorsHtml);
};

errors配列が空かどうかに応じて、クラスが「エラー」か「成功」かを決定します。もちろん、ロジックがそれよりも複雑な場合は、この関数をそのホームにすることもできます。

使用法:

$message.updateErrors(json.Errors);
于 2012-10-06T14:32:14.820 に答える