2016-09-08 17 views
2

data-mdl-forの場合、idの代わりにclassを使用して、JavaScriptで複数のツールチップを使用する必要があります。私のツールチップボタンはJSONによって生成されます。Material Design LiteのツールチップにIDの代わりにclassを使用するには?

<button id="tooltip" class="mdl-button mdl-js-button mdl-button--icon"> 
    <i class="material-icons lighticon">content_copy</i> 
     <div class="mdl-tooltip mdl-tooltip--left" data-mdl-for="tooltip"> 
      Copy 
     </div> 
</button> 

これはうまくいきますが、上記の複数のボタン要素を使用する必要があります。このidのボタンとdata-mdl-forをJavascriptに変換し、ツールチップにはquerySelectorまたはgetElementsByClassNameのようなものを使用しますか?

var a = document.querySelector('.mdl-button'); 
a.data-mdl-for = "tooltip" 

これは間違ったスクリプトですが、これが本当に必要なことを説明することができます。 data-mdl-forを使用する代わりにJavaSriptを使用するツールチップが必要です。または、data-mdl-forをjavascriptで指定し、ボタンクラスを使用してください。

+0

【のsetAttribute(https://developer.mozilla.org/en-US/docs/Web/API/Element/setAttribute)および[のgetAttribute(https://で現像.mozilla.org/en-US/docs/Web/API/Element/getAttribute)に '-'を付けて属性を設定します。 –

+0

@Emil S例を表示できますか? – shmshd17

答えて

2

//Get list 
 
var mdlButtons = document.querySelectorAll(".mdl-button"); 
 
//Iterate over list 
 
for (var i = 0; i < mdlButtons.length; i++) { 
 
    //find child tooptip 
 
    var child = mdlButtons[i].querySelector(".mdl-tooltip"); 
 
    if (child === null) { 
 
    continue; 
 
    } 
 
    //Modify list 
 
    child.setAttribute("data-mdl-for", mdlButtons[i].getAttribute("id")); 
 
    console.log(child); 
 
} 
 
//Show a list of ".mdl-button" where we can see it has been modified 
 
console.log(
 
    document.querySelectorAll(".mdl-button") 
 
);
<button id="tooltip-1" class="mdl-button mdl-js-button mdl-button--icon"> 
 
    <i class="material-icons lighticon">content_copy</i> 
 
    <div class="mdl-tooltip mdl-tooltip--left"> 
 
    Copy 
 
    </div> 
 
</button> 
 
<button id="tooltip-2" class="mdl-button mdl-js-button mdl-button--icon"> 
 
    <i class="material-icons lighticon">content_copy</i> 
 
    <div class="mdl-tooltip mdl-tooltip--left"> 
 
    Copy 
 
    </div> 
 
</button> 
 
<button id="tooltip-3" class="mdl-button mdl-js-button mdl-button--icon"> 
 
    <i class="material-icons lighticon">content_copy</i> 
 
    <div class="mdl-tooltip mdl-tooltip--left"> 
 
    Copy 
 
    </div> 
 
</button>

+0

はcodepenでこれを試しました。最初のボタンのみが機能し、他のボタンは機能しません。 http://codepen.io/shmshd12/pen/JRdaqw – shmshd17

+0

@ shmshd17トリックは一番上のボタンのIDを一意に保つことです、または、何をバインドするかを知ることはありません。私は最新の[ペン](http://codepen.io/anon/pen/KgpGqo)を作成しました。 –

+0

'id'の代わりに' class'を使う方法は他にありますか? – shmshd17

関連する問題