Twitter Bootstrapのデータ切り替え属性


284

data-toggleTwitter Bootstrapで属性は何をしますか?Bootstrap APIで回答が見つかりませんでした。

私も以前に同様の質問を見ました、リンク。しかし、それは私にはあまり役に立ちませんでした。

回答:


209

これは、要素をウィジェットのタイプに自動的にフックするBootstrapデータ属性です。Data- *はhtml5仕様の一部であり、data-toggleはBootstrapに固有です。

いくつかの例:

data-toggle="modal"
data-toggle="collapse"
data-toggle="dropdown"
data-toggle="tab"

通過ブートストラップJavaScriptのドキュメントとデータトグルを検索し、あなたはそれがコード例で使用される表示されます。

1つの実用的な例:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>

<div class="dropdown">
  <a class="dropdown-toggle" data-toggle="dropdown" href="#">Dropdown trigger</a>
  <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
    <li><a href="#">Item</a></li>
  </ul>
</div>


8
これはセレクターで使用される単なるHTML属性であり、HTML5固有ではありません。
UmurKontacı2013

24
@UmurKontacıdata- *はHTML5仕様で導入されました。
epascarello 2013

1
よくわかりませんが、JavaScriptドキュメントのリンクがgetbootstrap.com/2.3.2/javascript.htmlに変更されているようです。確認してください。
hims056 2013

78
data-toggleがhtml5仕様の一部であり、data- *がhtml5であり、data-toggleがBootstrapであるように聞こえます。
ベンテック2014

2
また、「data-toggle」はブートストラップ固有のものではなく、そのブートストラップが「toggle」という名前のdata- *属性を使用することを選択しただけです。そのため、別のプロジェクトのブートストラップに関連しない「data-toggle」属性に遭遇する可能性があります。
Daniel Higueras

74

で始まる属性はすべてdata-、特定の目的に使用されるカスタム属性のプレフィックスです(その目的はアプリケーションによって異なります)。これはrel、本来の目的以外の目的で人々が頻繁に使用する属性やその他の属性に対する意味論的救済策として追加されました(rel高度なツールチップなどのデータを保持するためによく使用されました)。

ブートストラップの場合、私はその内部の仕組みに精通していませんが、名前から判断すると、それは、可視性またはおそらくそれが接続されている要素のモード(折りたたみ可能など)の切り替えを可能にするフックだと思いますOctopress.orgのサイドバー)。

html5doctorには、data-属性に関する優れた記事があります

サイクル2は、data-属性の広範な使用のもう1つの例です


5
「HTML5では、data-で始まる属性はすべて有効なカスタム属性です。基本的には、HTML仕様で明示的に定義されていない要素にカスタムデータを添付する方法です。」
スパイダーマン、2015年

30

たとえば、レシピを一覧表示するWebアプリケーションを作成しているとします。顧客が開くレシピを選択する前に、リストを並べ替えたり、レシピの機能を表示したりできるようにしたい場合があります。これを行うには、調理時間、主な材料、食事の位置などをレシピのリスト要素の中に直接関連付ける必要があります。

<li><a href="recipe1.html">Borscht</a></li>
<li><a href="recipe2.html">Chocolate Mousse</a></li>
<li><a href="recipe3.html">Almond Radiccio Salad</a></li>
<li><a href="recipe4.html">Deviled Eggs</a></li>

その情報をページに取り込むには、さまざまなことができます。各LI要素にコメントを追加したり、リストアイテムにrel属性を追加したり、すべてのレシピを時間、食事、材料(つまり)に基づいて個別のフォルダーに配置したりできます。ほとんどの開発者が取ったソリューションは、現在の要素に関する情報を格納するためにクラス属性を使用することでした。これにはいくつかの利点があります。

  • 要素に複数のクラスを保存できます
  • クラス名は人間が読めるものにすることができます
  • JavaScript(className)でクラスにアクセスするのは簡単です
  • クラスは、それが存在する要素に関連付けられています

しかし、この方法にはいくつかの大きな欠点があります。

  • クラスが何をするか覚えておく必要があります。忘れたり、新しい開発者がプロ​​ジェクトを引き継ぐと、アプリケーションの実行方法に影響を与えることに気付かずに、クラスが削除または変更される可能性があります。
  • クラスはCSSでのスタイル設定にも使用され、CSSクラスをデータクラスと誤って複製して、ライブページで奇妙なスタイルになる可能性があります。
  • 複数のデータ要素を追加することはより困難です。複数のデータ要素がある場合は、JavaScriptを使用して、クラスの名前またはクラスリスト内の位置によって、何らかの方法でそれらにアクセスする必要があります。しかし、失敗するのは簡単です。

私が提案した他のすべての方法には、これらの問題とその他の問題がありました。しかし、それが迅速かつ簡単にデータを含める唯一の方法だったので、それを行いました。レスキューへのHTML5データ属性

HTML5は、新しいタイプの属性を任意の要素、つまりカスタムデータ要素(data- *)に追加しました。これらはカスタム属性(*で示される)であり、HTML要素に追加して、必要な任意のタイプのデータを定義できます。それらは2つの部分で構成されます。

属性名これは属性の名前です。少なくとも1つの小文字で、接頭辞data-が必要です。例:data-main-ingredient、data-cooking-time、data-meal。これはデータの名前です。

属性Vaule他のHTML属性と同様に、データ自体を等号で区切って引用符で囲みます。このデータは、Webページで有効な任意の文字列にすることができます。例:data-main-ingredient = "chocolate"。

次に、これらのデータ属性を任意のHTML要素に適用できます。たとえば、上記のリストの例の情報を定義できます。

<li data-main-ingredient="beets" data-cooking-time="1 hour" data-meal="dinner"><a href="recipe1.html">Borscht</a></li>
<li data-main-ingredient="chocolate" data-cooking-time="30 minutes" data-meal="dessert"><a href="recipe2.html">Chocolate Mousse</a></li>
<li data-main-ingredient="radiccio" data-cooking-time="20 minutes" data-meal="dinner"><a href="recipe1.html">Almond Radiccio Salad</a></li>
<li data-main-ingredient="eggs" data-cooking-time="15 minutes" data-meal="appetizer"><a href="recipe1.html">Deviled Eggs</a></li>

HTMLでその情報を取得すると、JavaScriptでその情報にアクセスし、そのデータに基づいてページを操作できるようになります。


27

ブートストラップドキュメントから

<!--Activate a modal without writing JavaScript. Set data-toggle="modal" on a 
controller element, like a button, along with a data-target="#foo" or href="#foo" 
to target a specific modal to toggle.-->

<button type="button" data-toggle="modal" data-target="#myModal">Launch modal</button>

11

非常に多くの答えが出されましたが、彼らは要点を理解していません。これを修正しましょう。

http://www.w3schools.com/bootstrap/bootstrap_ref_js_collapse.asp

要点

  1. で始まる属性data-は、HTML5パーサーによって解析されません。
  2. ブートストラップはこのdata-toggle属性を使用して、折りたたみ機能を作成します。

使用方法:2ステップのみ

  1. 折りたたむclass="collapse"要素に追加し#Aます。
  2. とを追加data-target="#A"data-toggle="collapse"ます。

目的:このdata-toggle属性により、divBootstrapを使用する場合、(ブロック)を折りたたむ/展開するコントロールを作成できます。


5

このデータ属性の存在は、Bootstrapに、ユーザー操作で別の要素の視覚的状態または論理的状態を切り替えるように指示します。

これは、モーダル、タブコンテンツ、ツールチップ、ポップオーバーメニューを表示したり、トグルボタンの押下状態を設定するために使用されます。明確なドキュメントなしで複数の方法で使用されています。


5

ブートストラップでのデータ切り替えの目的は、jQueryを使用して特定のタイプのすべてのタグを検索できるようにすることです。たとえば、すべてのポップオーバータグにdata-toggle = "popover"を配置してから、JQueryセレクターを使用してそれらすべてのタグを検索し、popover()関数を実行してそれらを初期化できます。同様に、タグにclass = "myPopover"を配置し、.myPopoverセレクターを使用して同じことを行うこともできます。その属性で何か特別なことが起こっているように見えるので、ドキュメントは混乱しています。

この

<div class="container">
    <h3>Popover Example</h3>
    <a href="#" class="myPop" title="Popover1 Header" data-content="Some content inside the popover1">Toggle popover1</a>
    <a href="#" class="myPop" title="Popover2 Header" data-content="Some content inside the popover2">Toggle popover2</a>
</div>

<script>
    $(document).ready(function(){
        $('.myPop').popover();   
    });
</script>

正常に動作します。


4

ブートストラップで定義されたHTML5データ属性です。ボタンをイベントにバインドします。


5
ボタンやイベントに限定されません。
Jowen、2014

ボタンのイベントリスナーがChrome devtoolsに表示されません
jscripter

2

ここでdata-toggleは、割り当て可能な値の例をさらに見つけることができます。ページにアクセスしてCTRL+Fを検索してくださいdata-toggle


2

Bootstrapは、JavaScript内でDOM要素の属性に簡単にアクセスするために、HTML5標準を利用しています。

データ-*

カスタムデータ属性と呼ばれる属性のクラスを形成します。これにより、スクリプトで使用される可能性のあるHTMLとそのDOM表現の間で独自の情報を交換できます。このようなカスタムデータはすべて、属性が設定されている要素のHTMLElementインターフェイスを介して利用できます。HTMLElement.datasetプロパティはそれらへのアクセスを提供します。

参照

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.