5

ページにアラートを表示する jQuery プラグインを作成しています。プラグイン自体がアラート マークアップを DOM に挿入します。jQuery の方法では、チェーンを維持するためにすべてを元に戻す必要があるthisため、フィードバックが必要な興味深い問題に遭遇しました。次の2つのオプションのどちらかを決定しようとしています。

オプション 1:

$("#content").alert('prepend', {type:'error', message:'This is an error'})

これはかなり単純に見えます。#contentアラートはDOM 要素の先頭に追加されます。問題は、何が返されるかが不明なことです。作成したばかりのアラート要素を返すのは理にかなっていますが、それは jQuery のやり方に反します。

オプション 2:

$("<div>").alert({type:'error', message:'This is an error'}).prependTo("#content")

この方法はわかりにくく、直感的ではないように見えますが、jQuery のやり方とより一致しており、どの要素が返されるかは明らかです。

では、どのオプションを選択しますか? $('<div>')私の懸念は、ほとんどのユーザーが新しい要素を作成できることを知らない可能性があることです。一方、jQuery プラグイン メソッドが呼び出された要素以外の要素を返す有名なプロジェクトを私は知りませんが、おそらく存在するでしょう。考え?

4

3 に答える 3

1

私はそれを(プロトタイプではなく)jQuery名前空間に入れます:

$.alert({type:'error', message:'This is an error'}).prependTo("#content");

さらに、ユーザーに自分で追加させる代わりに、セレクター/DOM ノード/jQuery オブジェクトを要求することを検討することもできます。

$.alert({
    parent: '#content', // or $('#content') or document.getElementById('content')
    type: 'error',
    message: 'This is an error'
});
于 2012-05-23T17:07:21.040 に答える
0

警告システムがポップアップまたはモーダルのようなシステムを意図している場合、ユーザーはコンテナーを指定する必要はありません。ただし、彼がコンテナを渡してアラートボックスを挿入できるようにすることができます。

$.alert({
  type: 'error',
  message: 'This is an error',
  container: $(...) // Optional
});

プラグイン インスタンスまたはアラート コンテナを返します。

于 2012-05-23T17:09:09.843 に答える
0

いいえ、jQuery は常に を返すとは限りませんthis。連鎖可能性とは、メソッドの結果がない場合にインスタンス自体を返す必要があることのみを意味します。

たとえばclone()、新しい jQuery インスタンスも返します。だから何も問題ありません。「不明」と言う場合は、それを文書化するか、メソッドの名前を「$.fn.getAlert」などに変更してください。

ただし、メソッドのシグネチャを選択する必要があります。最初のオプションは、コンテナーの必須パラメーターを持つようなものです。オプションにしたい場合は$.createAlert(...)、オプションのパラメーターを使用して、アラート システムを静的メソッドにすることができます。

于 2012-05-23T17:09:16.600 に答える