2016-09-08 4 views
2

data-mdl-for의 경우 id 대신 class을 입력해야 JavaScript에서 여러 툴팁을 사용할 수 있습니다. My Tooltip 버튼이 JSON에 의해 ​​생성됩니다.Material Design Lite 툴팁에 ID 대신 클래스를 사용하는 방법은 무엇입니까?

<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로 변환하고 작동중인 툴팁에 또는 getElementsByClassName과 같은 것을 사용할 수 있습니까?

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

나는 이것이 잘못된 스크립트라는 것을 알고 있지만 이것이 정말로 필요한 것을 설명 할 수 있습니다. data-mdl-for을 사용하는 대신 JavaSript를 사용하는 툴팁이 필요하거나 자바 스크립트에서 data-mdl-for을 지정하고 버튼 클래스를 사용하십시오.

+0

[의 setAttribute (https://developer.mozilla.org/en-US/docs/Web/API/Element/setAttribute) 및 [getAttribute를 (HTTPS : // 현상 .mozilla.org/ko-ko/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

이 코드 tried에서 이것을 시도했습니다. 첫 번째 버튼 만 작동하고 다른 버튼은 작동하지 않습니다. http://codepen.io/shmshd12/pen/JRdaqw – shmshd17

+0

@ shmshd17 트릭은 상단 버튼의 ID를 고유하게 유지하거나 무엇을 바인딩 할지를 모르는 것입니다. 업데이트 된 [펜] (http://codepen.io/anon/pen/KgpGqo)을 만들었습니다. –

+0

'id' 대신'class'를 사용하는 다른 방법이 있습니까? – shmshd17

관련 문제