Show
Ignore:
Timestamp:
03/19/08 00:04:19 (5 years ago)
Author:
coma2n
Message:

platform/silverlight/Silverlight.JQuery/trunk: 拡張メソッドを追加した

Location:
platform/silverlight/Silverlight.JQuery/trunk/src
Files:
1 added
3 modified

Legend:

Unmodified
Added
Removed
  • platform/silverlight/Silverlight.JQuery/trunk/src/Silverlight.JQuery.WebTest/index.html

    r8053 r8106  
    11<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    2 <html xmlns="http://www.w3.org/1999/xhtml" > 
     2<html xmlns="http://www.w3.org/1999/xhtml"> 
    33<head> 
    44    <title>Test Page for Silverlight.JQuery</title> 
  • platform/silverlight/Silverlight.JQuery/trunk/src/Silverlight.JQuery/JQuery/JQuery.cs

    r8053 r8106  
    7474                } 
    7575 
     76                /// <summary> 
     77                /// 指定したHTML要素からjQueryオブジェクトを生成します。 
     78                /// </summary> 
     79                /// <param name="elements">HTML要素</param> 
     80                /// <exception cref="ArgumentNullException">引数がnullの時</exception> 
     81                public JQuery(params HtmlElement[] elements) { 
     82                        #region ArgumentValidation 
     83                        ArgumentValidation.CheckForNullReference(elements, "elements"); 
     84                        #endregion 
     85 
     86                        element = (ScriptObject)window.Invoke("$", elements); 
     87                } 
     88 
    7689                #endregion 
    7790 
    7891                #region methods 
     92 
     93                #region Core 
     94 
     95                /// <summary> 
     96                /// 現在の要素の数を取得します。 
     97                /// </summary> 
     98                /// <returns>要素の数</returns> 
     99                public int Size() { 
     100                        return (int)((double)element.Invoke("size")); 
     101                } 
     102 
     103                /// <summary> 
     104                /// 現在の要素の数を取得します。 
     105                /// </summary> 
     106                public int Length { 
     107                        get { 
     108                                // 何故かdouble型で返ってくるの改めてint型でキャスト 
     109                                return (int)((double)element.GetProperty("length")); 
     110                        } 
     111                } 
     112 
     113                /// <summary> 
     114                /// 現在の要素から全てのHTML要素を取得します。 
     115                /// </summary> 
     116                /// <returns>HTML要素の配列</returns> 
     117                public HtmlElement[] Get() { 
     118                        return Get<HtmlElement[]>("get"); 
     119                } 
     120 
     121                /// <summary> 
     122                /// 現在の要素から指定したインデックスのHTML要素を取得します。 
     123                /// </summary> 
     124                /// <param name="index">インデックス</param> 
     125                /// <returns>HTML要素</returns> 
     126                /// <exception cref="ArgumentException">引数が不正な時</exception> 
     127                public HtmlElement Get(int index) { 
     128                        #region ArgumentValidation 
     129                        ArgumentValidation.CheckForGreaterEqualZero(index, "index"); 
     130                        #endregion 
     131 
     132                        return Get<HtmlElement>("get", index); 
     133                } 
     134 
     135                #endregion 
    79136 
    80137                #region Attributes 
     
    169226 
    170227                /// <summary> 
     228                /// 指定したハンドラをページが読み込まれた時に呼び出されるイベントに追加します。 
     229                /// </summary> 
     230                /// <param name="handler">ハンドラ</param> 
     231                /// <returns>自分自身</returns> 
     232                /// <exception cref="ArgumentNullException">引数がnullの時</exception> 
     233                public JQuery Ready(EventHandler handler) { 
     234                        OnReady += handler; 
     235 
     236                        return this; 
     237                } 
     238                /// <summary> 
     239                /// ページが読み込まれた時に呼び出されます。 
     240                /// </summary> 
     241                public event EventHandler OnReady { 
     242                        add { 
     243                                HtmlPage.Document.DocumentReady += value; 
     244                        } 
     245                        remove { 
     246                                HtmlPage.Document.DocumentReady -= value; 
     247                        } 
     248                } 
     249 
     250                /// <summary> 
    171251                /// 指定したハンドラを要素がブラーされた時に呼び出されるイベントに追加します。 
    172252                /// </summary> 
     
    175255                /// <exception cref="ArgumentNullException">引数がnullの時</exception> 
    176256                public JQuery Blur(EventHandler<HtmlEventArgs> handler) { 
    177                         #region ArgumentValidation 
    178                         ArgumentValidation.CheckForNullReference(handler, "handler"); 
    179                         #endregion 
    180  
    181257                        OnBlur += handler; 
    182258 
     
    188264                public event EventHandler<HtmlEventArgs> OnBlur { 
    189265                        add { 
    190                                 EachElement(ele => ele.AttachEvent("onblur", value)); 
    191                         } 
    192                         remove { 
    193                                 EachElement(ele => ele.DetachEvent("onblur", value)); 
     266                                this.Each(ele => ele.AttachEvent("onblur", value)); 
     267                        } 
     268                        remove { 
     269                                this.Each(ele => ele.DetachEvent("onblur", value)); 
    194270                        } 
    195271                } 
     
    202278                /// <exception cref="ArgumentNullException">引数がnullの時</exception> 
    203279                public JQuery Change(EventHandler<HtmlEventArgs> handler) { 
    204                         #region ArgumentValidation 
    205                         ArgumentValidation.CheckForNullReference(handler, "handler"); 
    206                         #endregion 
    207  
    208280                        OnChange += handler; 
    209281 
     
    215287                public event EventHandler<HtmlEventArgs> OnChange { 
    216288                        add { 
    217                                 EachElement(ele => ele.AttachEvent("onchange", value)); 
    218                         } 
    219                         remove { 
    220                                 EachElement(ele => ele.DetachEvent("onchange", value)); 
     289                                this.Each(ele => ele.AttachEvent("onchange", value)); 
     290                        } 
     291                        remove { 
     292                                this.Each(ele => ele.DetachEvent("onchange", value)); 
    221293                        } 
    222294                } 
     
    229301                /// <exception cref="ArgumentNullException">引数がnullの時</exception> 
    230302                public JQuery Click(EventHandler<HtmlEventArgs> handler) { 
    231                         #region ArgumentValidation 
    232                         ArgumentValidation.CheckForNullReference(handler, "handler"); 
    233                         #endregion 
    234  
    235303                        OnClick += handler; 
    236304 
     
    242310                public event EventHandler<HtmlEventArgs> OnClick { 
    243311                        add { 
    244                                 EachElement(ele => ele.AttachEvent("onclick", value)); 
    245                         } 
    246                         remove { 
    247                                 EachElement(ele => ele.DetachEvent("onclick", value)); 
     312                                this.Each(ele => ele.AttachEvent("onclick", value)); 
     313                        } 
     314                        remove { 
     315                                this.Each(ele => ele.DetachEvent("onclick", value)); 
    248316                        } 
    249317                } 
     
    256324                /// <exception cref="ArgumentNullException">引数がnullの時</exception> 
    257325                public JQuery DblClick(EventHandler<HtmlEventArgs> handler) { 
    258                         #region ArgumentValidation 
    259                         ArgumentValidation.CheckForNullReference(handler, "handler"); 
    260                         #endregion 
    261  
    262326                        OnDblClick += handler; 
    263327 
     
    269333                public event EventHandler<HtmlEventArgs> OnDblClick { 
    270334                        add { 
    271                                 EachElement(ele => ele.AttachEvent("ondblclick", value)); 
    272                         } 
    273                         remove { 
    274                                 EachElement(ele => ele.DetachEvent("ondblclick", value)); 
     335                                this.Each(ele => ele.AttachEvent("ondblclick", value)); 
     336                        } 
     337                        remove { 
     338                                this.Each(ele => ele.DetachEvent("ondblclick", value)); 
    275339                        } 
    276340                } 
     
    283347                /// <exception cref="ArgumentNullException">引数がnullの時</exception> 
    284348                public JQuery Focus(EventHandler<HtmlEventArgs> handler) { 
    285                         #region ArgumentValidation 
    286                         ArgumentValidation.CheckForNullReference(handler, "handler"); 
    287                         #endregion 
    288  
    289349                        OnFocus += handler; 
    290350 
     
    296356                public event EventHandler<HtmlEventArgs> OnFocus { 
    297357                        add { 
    298                                 EachElement(ele => ele.AttachEvent("onfocus", value)); 
    299                         } 
    300                         remove { 
    301                                 EachElement(ele => ele.DetachEvent("onfocus", value)); 
     358                                this.Each(ele => ele.AttachEvent("onfocus", value)); 
     359                        } 
     360                        remove { 
     361                                this.Each(ele => ele.DetachEvent("onfocus", value)); 
    302362                        } 
    303363                } 
     
    310370                /// <exception cref="ArgumentNullException">引数がnullの時</exception> 
    311371                public JQuery KeyDown(EventHandler<HtmlEventArgs> handler) { 
    312                         #region ArgumentValidation 
    313                         ArgumentValidation.CheckForNullReference(handler, "handler"); 
    314                         #endregion 
    315  
    316372                        OnKeyDown += handler; 
    317373 
     
    323379                public event EventHandler<HtmlEventArgs> OnKeyDown { 
    324380                        add { 
    325                                 EachElement(ele => ele.AttachEvent("onkeydown", value)); 
    326                         } 
    327                         remove { 
    328                                 EachElement(ele => ele.DetachEvent("onkeydown", value)); 
     381                                this.Each(ele => ele.AttachEvent("onkeydown", value)); 
     382                        } 
     383                        remove { 
     384                                this.Each(ele => ele.DetachEvent("onkeydown", value)); 
    329385                        } 
    330386                } 
     
    337393                /// <exception cref="ArgumentNullException">引数がnullの時</exception> 
    338394                public JQuery KeyPress(EventHandler<HtmlEventArgs> handler) { 
    339                         #region ArgumentValidation 
    340                         ArgumentValidation.CheckForNullReference(handler, "handler"); 
    341                         #endregion 
    342  
    343395                        OnKeyPress += handler; 
    344396 
     
    350402                public event EventHandler<HtmlEventArgs> OnKeyPress { 
    351403                        add { 
    352                                 EachElement(ele => ele.AttachEvent("onkeypress", value)); 
    353                         } 
    354                         remove { 
    355                                 EachElement(ele => ele.DetachEvent("onkeypress", value)); 
     404                                this.Each(ele => ele.AttachEvent("onkeypress", value)); 
     405                        } 
     406                        remove { 
     407                                this.Each(ele => ele.DetachEvent("onkeypress", value)); 
    356408                        } 
    357409                } 
     
    364416                /// <exception cref="ArgumentNullException">引数がnullの時</exception> 
    365417                public JQuery KeyUp(EventHandler<HtmlEventArgs> handler) { 
    366                         #region ArgumentValidation 
    367                         ArgumentValidation.CheckForNullReference(handler, "handler"); 
    368                         #endregion 
    369  
    370418                        OnKeyUp += handler; 
    371419 
     
    377425                public event EventHandler<HtmlEventArgs> OnKeyUp { 
    378426                        add { 
    379                                 EachElement(ele => ele.AttachEvent("onkeyup", value)); 
    380                         } 
    381                         remove { 
    382                                 EachElement(ele => ele.DetachEvent("onkeyup", value)); 
     427                                this.Each(ele => ele.AttachEvent("onkeyup", value)); 
     428                        } 
     429                        remove { 
     430                                this.Each(ele => ele.DetachEvent("onkeyup", value)); 
    383431                        } 
    384432                } 
     
    391439                /// <exception cref="ArgumentNullException">引数がnullの時</exception> 
    392440                public JQuery Load(EventHandler<HtmlEventArgs> handler) { 
    393                         #region ArgumentValidation 
    394                         ArgumentValidation.CheckForNullReference(handler, "handler"); 
    395                         #endregion 
    396  
    397441                        OnLoad += handler; 
    398442 
     
    404448                public event EventHandler<HtmlEventArgs> OnLoad { 
    405449                        add { 
    406                                 EachElement(ele => ele.AttachEvent("onload", value)); 
    407                         } 
    408                         remove { 
    409                                 EachElement(ele => ele.DetachEvent("onload", value)); 
     450                                this.Each(ele => ele.AttachEvent("onload", value)); 
     451                        } 
     452                        remove { 
     453                                this.Each(ele => ele.DetachEvent("onload", value)); 
    410454                        } 
    411455                } 
     
    418462                /// <exception cref="ArgumentNullException">引数がnullの時</exception> 
    419463                public JQuery MouseDown(EventHandler<HtmlEventArgs> handler) { 
    420                         #region ArgumentValidation 
    421                         ArgumentValidation.CheckForNullReference(handler, "handler"); 
    422                         #endregion 
    423  
    424464                        OnMouseDown += handler; 
    425465 
     
    431471                public event EventHandler<HtmlEventArgs> OnMouseDown { 
    432472                        add { 
    433                                 EachElement(ele => ele.AttachEvent("onmousedown", value)); 
    434                         } 
    435                         remove { 
    436                                 EachElement(ele => ele.DetachEvent("onmousedown", value)); 
     473                                this.Each(ele => ele.AttachEvent("onmousedown", value)); 
     474                        } 
     475                        remove { 
     476                                this.Each(ele => ele.DetachEvent("onmousedown", value)); 
    437477                        } 
    438478                } 
     
    445485                /// <exception cref="ArgumentNullException">引数がnullの時</exception> 
    446486                public JQuery MouseMove(EventHandler<HtmlEventArgs> handler) { 
    447                         #region ArgumentValidation 
    448                         ArgumentValidation.CheckForNullReference(handler, "handler"); 
    449                         #endregion 
    450  
    451487                        OnMouseMove += handler; 
    452488 
     
    458494                public event EventHandler<HtmlEventArgs> OnMouseMove { 
    459495                        add { 
    460                                 EachElement(ele => ele.AttachEvent("onmousemove", value)); 
    461                         } 
    462                         remove { 
    463                                 EachElement(ele => ele.DetachEvent("onmousemove", value)); 
     496                                this.Each(ele => ele.AttachEvent("onmousemove", value)); 
     497                        } 
     498                        remove { 
     499                                this.Each(ele => ele.DetachEvent("onmousemove", value)); 
    464500                        } 
    465501                } 
     
    472508                /// <exception cref="ArgumentNullException">引数がnullの時</exception> 
    473509                public JQuery MouseOut(EventHandler<HtmlEventArgs> handler) { 
    474                         #region ArgumentValidation 
    475                         ArgumentValidation.CheckForNullReference(handler, "handler"); 
    476                         #endregion 
    477  
    478510                        OnMouseOut += handler; 
    479511 
     
    485517                public event EventHandler<HtmlEventArgs> OnMouseOut { 
    486518                        add { 
    487                                 EachElement(ele => ele.AttachEvent("onmouseout", value)); 
    488                         } 
    489                         remove { 
    490                                 EachElement(ele => ele.DetachEvent("onmouseout", value)); 
     519                                this.Each(ele => ele.AttachEvent("onmouseout", value)); 
     520                        } 
     521                        remove { 
     522                                this.Each(ele => ele.DetachEvent("onmouseout", value)); 
    491523                        } 
    492524                } 
     
    499531                /// <exception cref="ArgumentNullException">引数がnullの時</exception> 
    500532                public JQuery MouseOver(EventHandler<HtmlEventArgs> handler) { 
    501                         #region ArgumentValidation 
    502                         ArgumentValidation.CheckForNullReference(handler, "handler"); 
    503                         #endregion 
    504  
    505533                        OnMouseOver += handler; 
    506534 
     
    512540                public event EventHandler<HtmlEventArgs> OnMouseOver { 
    513541                        add { 
    514                                 EachElement(ele => ele.AttachEvent("onmouseover", value)); 
    515                         } 
    516                         remove { 
    517                                 EachElement(ele => ele.DetachEvent("onmouseover", value)); 
     542                                this.Each(ele => ele.AttachEvent("onmouseover", value)); 
     543                        } 
     544                        remove { 
     545                                this.Each(ele => ele.DetachEvent("onmouseover", value)); 
    518546                        } 
    519547                } 
     
    526554                /// <exception cref="ArgumentNullException">引数がnullの時</exception> 
    527555                public JQuery MouseUp(EventHandler<HtmlEventArgs> handler) { 
    528                         #region ArgumentValidation 
    529                         ArgumentValidation.CheckForNullReference(handler, "handler"); 
    530                         #endregion 
    531  
    532556                        OnMouseUp += handler; 
    533557 
     
    539563                public event EventHandler<HtmlEventArgs> OnMouseUp { 
    540564                        add { 
    541                                 EachElement(ele => ele.AttachEvent("onmouseup", value)); 
    542                         } 
    543                         remove { 
    544                                 EachElement(ele => ele.DetachEvent("onmouseup", value)); 
     565                                this.Each(ele => ele.AttachEvent("onmouseup", value)); 
     566                        } 
     567                        remove { 
     568                                this.Each(ele => ele.DetachEvent("onmouseup", value)); 
    545569                        } 
    546570                } 
     
    558582                        return (T)element.Invoke(methodName); 
    559583                } 
     584 
    560585                /// <summary> 
    561586                ///  
     
    597622                } 
    598623 
    599                 /// <summary> 
    600                 /// 現在の各要素に対して、指定したアクションを実行します。 
    601                 /// </summary> 
    602                 /// <param name="func">実行するアクション</param> 
    603                 private void EachElement(Action<HtmlElement> func) { 
    604                         // 何故かdouble型で返ってくる。 
    605                         var length = (double)element.GetProperty("length"); 
    606  
    607                         for(int i = 0; i < length; i++) { 
    608                                 func(Get<HtmlElement>("get", i)); 
    609                         } 
    610                 } 
    611  
    612624                #endregion 
    613625 
  • platform/silverlight/Silverlight.JQuery/trunk/src/Silverlight.JQuery/Silverlight.JQuery.csproj

    r8044 r8106  
    5050    </Compile> 
    5151    <Compile Include="Commons\ArgumentValidation.cs" /> 
     52    <Compile Include="JQuery\JQueryExtension.cs" /> 
    5253    <Compile Include="Properties\AssemblyInfo.cs" /> 
    5354    <Compile Include="JQuery\JQuery.cs" />