0

私は最近、一部の jQuery UI ウィジェットには機能するが文書化されていない追加のプロパティがあることを発見しました。たとえば、jQuery UI 1.11.4 ダイアログ ボックスでプロパティを提供する場合、や などbuttonsのサブプロパティを使用できますが、どちらも公式ドキュメントには記載されていません。idautofocus

$("#myDialog").dialog({
    title: "Do the thing?"
    buttons:
    [
        {
            text: "Yes",
            id: "dialogBtnYes",
            click: function () {
                $(this).dialog("close")
            }
        },
        {
            text: "No thanks",
            id: "dialogBtnNo",
            autofocus: true,
            click: function () {
                $(this).dialog("close")
            }
        }
    ]
});

文書化されていない他のオプションをどれだけ使用できるか疑問に思っています。JavaScript ファイルをくまなく調べてみましたが、私のような JavaScript 初心者にとっては非常に困難です。

他の「隠された」機能を理解するためにソースコードをくまなく調べることをお勧めしますか、それとも実現可能ではありませんか? それが進むべき道なら、太陽が赤色巨星になる前にこれを達成する方法について何かアドバイスはありますか? そうでない場合、jQuery UI (または JavaScript フレームワーク) が他に何を提供する必要があるかを学習するために、他にどのような方法をお勧めしますか?

4

1 に答える 1

1

ライブラリのすべてのメソッドとプロパティを列挙するには、再帰関数を使用します。例えば:

function getUDFs()
    {
    var current;

     /* Use a local variable named current instead of a global variable */

    for(current in arguments[0])
      {
      getUDFs.id = arguments[1]  + " => ";

      /* If the property is not null or undefined */
      if (!!arguments[0][current] || arguments[0][current] === "")
        {
        /* If the constructor is a standard JavaScript type */
        if (/Function|String|Object/.test(String(arguments[0][current].constructor) ) )
          {
          /* Store in an array */
          if (getUDFs.hasOwnProperty("data") )
            {
            getUDFs.data.push(getUDFs.id + current)
            }
          else
            {
            getUDFs.data = []
            }
          }

        if (/Object|Function/.test(String(arguments[0][current].constructor) ) )
         {
         getUDFs(arguments[0][current], getUDFs.id + current)
         }
        }
      }  
     }

getUDFs($.ui,"jQueryUI");
console.log(getUDFs.data);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>

jQuery UI オブジェクトが DOM 要素になると、 プロパティと プロパティが追加されますidmousemove例えば:

function getUDFs()
    {
    var current;

    for(current in arguments[0])
      {
      getUDFs.id = arguments[1]  + " => ";

      if (!!arguments[0][current] || arguments[0][current] === "")
        {
        if (/Function|String|Object/.test(String(arguments[0][current].constructor) ) )
          {
          if (getUDFs.hasOwnProperty("data") )
            {
            getUDFs.data.push(getUDFs.id + current)
            }
          else
            {
            getUDFs.data = []
            }
          }

        if (/Object|Function/.test(String(arguments[0][current].constructor) ) )
         {
         getUDFs(arguments[0][current], getUDFs.id + current)
         }
        }
      }  
     }

getUDFs(document.body,"document.body");
console.log(getUDFs.data);

参考文献

于 2016-11-03T17:07:03.703 に答える