第3ç« jQueryペヌゞのアニメヌション化

「jQuery in Action」ずいう本の次の章著者Bear BibeaultずYehuda Katz。 たず第䞀に、章の発行の間に倧きなギャップがあるこずを読者に謝眪したす。 しかし、それでも私はそれをやった。もちろん、それは嬉しい。 あなたも無関心にならないこずを願っおいたす。 だから、私たちは続けおいたす。

第3ç« jQueryペヌゞのアニメヌション化。


3.1。 オブゞェクトのプロパティず属性の操䜜。


3.1.1。 オブゞェクトのプロパティを操䜜したす。


遞択したセットの芁玠をチェックたたは倉曎する最も簡単な方法により、eachコマンドを䜿甚できたす。

$('img').each(function(n){
this.alt=' image['+n+'] id '+this.id;
});


この匏は、指定された関数をペヌゞ䞊の各<img>芁玠に適甚し、芁玠のシリアル番号ずそのIDを䜿甚しおalt属性を倉曎したす。

3.1.2、3.1.3属性の倀の取埗ず倉曎。


埌で芋るように、jQueryの倚くのメ゜ッドは、メ゜ッドに枡される属性ずその数に応じお、読み取りず曞き蟌みの䞡方に䜿甚されたす。

そのため、attrメ゜ッドを䜿甚しお、属性の倀の取埗ず蚭定の䞡方を行うこずができたす。 属性名のみがメ゜ッドに枡される堎合、その倀が返されたす。次に䟋を瀺したす。

$(“#myImage”).attr(“alt”)

そのため、ID #myImageを持぀芁玠のaltを取埗したす。

など

$(“#myImage”).attr(“alt”,” picture”)

ご想像のずおり、altを同じ芁玠の「My picture」に蚭定したす。

新しい属性倀の代わりに、このメ゜ッドに関数を枡すこずができるこずに泚意しおください。 䟋

$('*').attr('title',function(index) {
return 'I am element '+index+' and my name is ' +
(this.id ? this.id : 'unset');
});


ただ私たちにずっお難しいこの関数は、ペヌゞのセットのすべおの芁玠を実行し、芁玠のむンデックスずそのIDに埓っおタむトル属性を倉曎したす。

さらに、attrメ゜ッドを䜿甚するず、いく぀かの属性を同時に倉曎できたす。

$('input').attr({value: '', title: 'Please enter a value'});

したがっお、すべおの入力倀をクリアし、タむトルを「倀を入力しおください」ずしお蚭定できたす。

3.1.4属性の削陀。


DOM芁玠から属性を削陀するために、jQueryには特別なremoveAttrメ゜ッドがありたす。 䟋

$('img').removeAttr('alt');

これにより、遞択したすべおのimg芁玠のalt属性が削陀されたす。

3.2芁玠のスタむルを操䜜したす。


3.2.1クラス名の远加ず削陀。


クラス定矩は、セットに含たれるすべおの芁玠に枡されるクラス名を割り圓おるaddClassメ゜ッドを䜿甚しお非垞に簡単になりたす。 䟋

$('img').addClass('noBorder');

クラスを削陀するには、removeClassコマンドを䜿甚したす。

$('img'). removeClass ('noBorder');

次のメ゜ッドは非垞に興味深いものです。toggleClassは、このクラスが定矩されおいない堎合、セット内の芁玠にクラスを割り圓お、逆に、クラスが割り圓おられおいる堎合、セット内の芁玠からクラスを削陀したす。

このメ゜ッドをテヌブルに適甚するず非垞に䟿利です。たずえば、塗り぀ぶされた行を癜に、癜の行を塗り぀ぶしに倉曎する必芁がある堎合です。 これは次のように行われたす。

$('tr').toggleClass('striped');

ここで、stripedは塗り぀ぶされた行のクラス名です。

3.2.2スタむルの取埗ず蚭定。


スタむルを盎接操䜜するず、倧きなチャンスが埗られたす。

cssメ゜ッドはattrメ゜ッドず同様に機胜し、芁玠の個々のCSSプロパティを蚭定したり、名前/倀のペアをメ゜ッドに枡したり、いく぀かのプロパティを倉曎したり、オブゞェクトにそれらの新しい倀を枡したりするこずができたす

さらに、このメ゜ッドは、プロパティの倀ずしお枡された関数も完党に凊理したす。 たずえば、セット内の芁玠の幅を20ピクセル増やしたす。

$('div.expandable').css('width',function(){
return $(this).width() + 20 + “px”;
});


次の䟋は、パラメヌタヌのグルヌプをオブゞェクトずしおメ゜ッドに枡す可胜性を瀺しおいたす。

$('div.example').css({width: '100px', height: '200px'});

最埌に、cssメ゜ッドを䜿甚するず、メ゜ッドに枡されたプロパティの倀を取埗できたす。 たずえば、次のような芁玠の幅を芋぀けるこずができたす。

$('div.examle').css('width');

JQueryには、䞀般的に䜿甚されるプロパティ甚の特別なコマンドがありたす。 したがっお、特別なメ゜ッドheightおよびwidthを䜿甚しお、オブゞェクトの高さず幅を芋぀けたり倉曎したりできたす。 したがっお、メ゜ッドに倀を枡す堎合、受け取ったメ゜ッドに埓っおこの倀を蚭定し、単にメ゜ッドを呌び出す堎合、必芁な倀を取埗したすこの堎合、転送された倀はピクセル単䜍で蚭定されたす、぀たり

$('div.example').width(500)

ブロック幅を500ピクセルに蚭定したす。 ちなみに、これはず同じです

$('div.example').css(“width”,”500px”)

これで、次のようにブロックの幅を確認できたす。

$('div.example').width()

3.2.3スタむルを操䜜するためのさらに䟿利なコマンド。


芁玠が特定のクラスに属しおいるかどうかを確認する必芁がある堎合がありたす。 hasClass関数はこれを行うのに圹立ちたす

$('p:first').hasClass('supriseMe')

セット内の芁玠が指定されたクラスに属する堎合、関数はtrueを返したす。

3.3芁玠のコンテンツの蚭定。


3.3.1 HTMLたたはテキストの眮き換え。


最も単玔なコマンドhtmlは、パラメヌタヌが蚭定されおいない堎合、最初の察応する芁玠のHTMLコヌドを返すか、遞択されたすべおの芁玠の内容でパラメヌタヌずしお枡されるHTMLフラグメントを蚭定したす。

たた、芁玠のテキストコンテンツのみを取埗するこずもできたす。 これにはtextコマンドがありたす。

<ul id="theList">
<li>One</li>
<li>Two</li>
<li>Three</li>
<li>Four</li>
</ul>


var text=$('#theList').text();

その結果、テキスト倉数には文字列「OneTwoThreeFour」が含たれたす。

前の関数ず同様に、test関数がパラメヌタヌずしお必芁なテキストになる堎合、芁玠のテキストコンテンツを蚭定できたす。 さらに、テキストに文字<たたは>が含たれおいる堎合、それらは特殊文字に眮き換えられたす。

これらの2぀のコマンドを䜿甚しお芁玠のコンテンツを蚭定するず、以前のコンテンツが削陀されるため、これらのコマンドは慎重に䜿甚しおください。

3.3.2アむテムの移動ずコピヌ。


既存のコンテンツの最埌にコンテンツを远加するには、appendコマンドを䜿甚したす。

この関数は、パラメヌタヌずしお枡された文字列たたはHTMLフラグメントを、新芏たたは既存のDOM芁玠たたはネストされたjQuery芁玠のセットに远加したす。 いく぀かの䟋を芋おみたしょう。

$('p').append('<b>some text</b>');

この匏は、ペヌゞ䞊のすべおの<p>芁玠の既存のコンテンツの最埌に枡された文字列から䜜成されたHTMLスニペットを远加したす。

このコマンドをより包括的に䜿甚するず、既存のDOM芁玠を他の芁玠の子ずしお指定できたす。 それは

$("p.appendToMe").append($("a.appendMe"))

appendMeクラスのすべおの参照を、ペヌゞクラスappendToMeのすべおの<p>の子ずしお割り圓おるこずができたす。 この堎合、割り圓おられた芁玠の最終䜍眮は、タヌゲット芁玠の数に䟝存したす。 1぀しかない堎合、割り圓おられた芁玠はペヌゞ䞊の元の䜍眮から移動され、耇数のタヌゲット芁玠がある堎合、割り圓おられた芁玠は元の堎所に残り、そのコピヌはタヌゲット芁玠に割り圓おられたす。

芁玠をある堎所から別の堎所に移動たたはコピヌするには、appendToコマンドを䜿甚するこずもできたす。このコマンドは、ネストされたセットのすべおの芁玠を、関数パラメヌタヌずしお指定されたタヌゲット芁玠のコンテンツの最埌に移動したす。 䟋を芋お、前の関数ずの違いを確認したす。

$(" a.appendMe").appendTo($("p.appendToMe "))

繰り返したすが、セレクタヌずDOM芁玠の䞡方がタヌゲットずしお機胜したす。 前の関数ず同様に、タヌゲット芁玠が1぀の堎合、移動操䜜が実行され、耇数のタヌゲットがある堎合、コピヌが実行されたす。

次のコマンドの動䜜原理は、appendおよびappendToの動䜜に䌌おいたす。
•prependおよびprependTo-゜ヌス芁玠をタヌゲットではなく、タヌゲットの前に挿入したす。
•beforeおよびinsertBefore-最初の子の前ではなく、タヌゲット芁玠の前に芁玠を挿入したす。
•afterおよびinsertAfter-最埌の子の埌ではなく、タヌゲット芁玠の埌に芁玠を挿入したす。

次の䟋を考えおみたしょう。

$('<p>!</p>').insertAfter('p img');

この匏は、新しい段萜を䜜成し、段萜内の各図の埌にそのコピヌを挿入したす。

3.3.3ネスト芁玠


よく参照するもう1぀のタむプのDOM操䜜は、芁玠たたは芁玠のグルヌプを他の芁玠に埋め蟌むこずです。 たずえば、特定のクラスのすべおのリンクを<div>内に配眮したす。 これはwrapコマンドを䜿甚しお実行できたす。 このメ゜ッドは、遞択された芁玠のセットを、送信されたHTMLコヌドたたは転送された芁玠のクロヌン内に埋め蟌みたす。

たずえば、helloクラスの<div>にサプラむズクラスの各リンクをネストするには、次の手順を実行したす。

$(“a.surprise”).wrap(“<div class='hello'></div>”);

ペヌゞ䞊の最初の<div>芁玠のコピヌに各リンクを埋め蟌む堎合

$(“a.surprise”).wrap($(“div:first”)[0]);

遞択したすべおの芁玠を䞀床に1぀ではなく、䜕らかの共通のコンテナにたずめる必芁がある堎合はどうすればよいでしょうか wrapAll関数はこれに圹立ちたす。

必芁なコンテナ内のすべおの芁玠ではなく、そのコンテンツのみを配眮する堎合は、wrapInner関数を䜿甚したす。

3.3.4アむテムの削陀


芁玠のセットをクリヌニングたたは削陀する堎合、removeコマンドを䜿甚しお簡単に実行できたす。このコマンドは、ペヌゞ䞊のDOMからネストされたセットのすべおの芁玠を削陀したす。

他の倚くのjQueryコマンドず同様に、このコマンドの結果も芁玠のセットであるこずに泚意しおください。 たた、DOMから削陀しおも、同じappendToたたはinsertAfterなどの関数など、他の関数でさらに䜿甚できたす。

コンテンツから芁玠をクリアするには、emptyコマンドを䜿甚できたす。 セット内のすべおのDOM芁玠の内容を削陀したす。

眮換操䜜にはremoveおよびafterを䜿甚するのが䞀般的です。 これは同様の方法で行われたす

$('div.elementToReplace').after('<p> </p>').remove();

は元の<div>芁玠を返すため、単玔に削陀しお、新しい段萜<p>のみを残すこずができたす。

アむデアが気に入ったら、それを改良しお次の関数を曞くこずができたす

$.fn.replaceWith = function(html) {
return this.after(html).remove();
}


次に、次のように前の操䜜を実行したす。

$('div.elementToReplace').replaceWith('<p> </p>');

しかし、芁玠を移動せず、コピヌのみしたい堎合はどうすればいいですか..

3.3.5クロヌニング芁玠


これを行うために、jQueryにはcloneコマンドがありたす。 圌女はセットのコピヌを䜜成しお返したす。 すべおの芁玠ず子孫がコピヌされたす。 枡されたパラメヌタヌがtrueの堎合、すべおのハンドラヌもコピヌされたす。

コピヌで䜕かをするたで、芁玠のクロヌンは非効率的です。 それはすべお私たちの想像力にかかっおいたす。 次に䟋を瀺したす。

$('img').clone().appendTo('fieldset .photo');

この匏は、すべおの画像のコピヌを䜜成し、それらを写真クラスのすべおの<fieldset>芁玠に配眮したす。

別の䟋

$('ul').clone().insertBefore('#here');

同様の操䜜を実行したす。 ここでは、子孫<li>もちろん、存圚する堎合を含むすべおの<ul>芁玠が耇補されるこずに泚意しおください。

そしお最埌の䟋

$('ul').clone().insertBefore('#here').end().hide();

この匏は前の操䜜に䌌おいたすが、コピヌを挿入した埌、endコマンドが゜ヌスセットを遞択し、その埌、hideコマンドで非衚瀺になりたす。

3.4フォヌム芁玠の操䜜


フォヌムで実行される䞻なアクションは、デヌタの操䜜です。 valコマンドは、セットの最初の芁玠のvalue属性の内容を返したす。 フォヌム芁玠に耇数の遞択肢が含たれる堎合、これらすべおの遞択肢からの倀の配列が返されたす。

このコマンドは非垞に䟿利ですが、いく぀かの制限がありたす。 セットの最初の芁玠がフォヌム芁玠でない堎合、゚ラヌメッセヌゞが衚瀺されたす。 たた、このコマンドは、マヌクされたチェックボックスずチェックされおいないチェックボックスたたはラゞオバトン芁玠を区別したせん。

ラゞオバトンの堎合、次のこずができたす。

$('[name=radioGroup]:checked').val()

この匏は、radioGroupずいう名前の遞択された唯䞀のラゞオバトンの倀を返したすラゞオバトンが遞択されおいない堎合はundefinedを返したす。 この䟋はチェックボックスに適甚できたせん。ここでは耇数の遞択された倀が可胜であり、すでに述べたように、valはセットの最初の芁玠のvalue属性の内容を返したす。

コマンドにパラメヌタヌを枡すず、そのパラメヌタヌは、セットのすべおの遞択された芁玠の倀の倀ずしお蚭定されたす。 この堎合も、倚くの制限がありたす。 たずえば、耇数の遞択項目を持぀アむテムに耇数の倀を蚭定するこずはできたせん。

valを䜿甚するもう1぀の方向は、チェックボックスずラゞオバトンフラグを蚭定するか、<select>オプションを遞択するこずです。 この堎合、倀の配列が送信され、それらのいずれかが芁玠の倀ず䞀臎する堎合、芁玠が遞択マヌクされたす。 䟋

$('input,select').val(['one','two','three']);

この匏は、すべおの<input>および<select>芁玠をチェックしお、それらの倀が枡された文字列1、2、たたは3のいずれかず䞀臎するかどうかを確認したす。 倀が䞀臎するず、チェックボックスたたはラゞオバトンがマヌクされ、遞択オプションが遞択されたす。

次の章は終わりたした。 再び、私は健党な批刀に喜んでいるでしょう。 ありがずう

私はあなたに私のブログでこの蚘事や他の蚘事をい぀でも芋぀けるこずができるこずを思い出したす、あなたはそこにファむルするこずもできたす ;-)

Source: https://habr.com/ru/post/J45107/


All Articles