2009-11-04 2 views
1

YUI로 변환하려고하는 jquery 코드가 있습니다. 저는 YUI 2.8을 사용하고 있습니다. jquery를 사용하면 dom 요소를 쉽게 바꿀 수있었습니다. jquery.replaceWith 및 jquery.append 대신 YUI를 사용하는 좋은 방법이 있습니까? 나는 아래와 같이 함수를 작성하려고했지만, 렌더링 된 DOM을 전달해야 할 때만 텍스트를 사용할 수 있습니다. <p><a href="">what</a></p> (. 훨씬 더 복잡 이것보다)jQuery.replaceWith 및 jquery.append에 대한 YUI 대체

function replaceWith(el_id, text){ 
    //YUI doesn't seem to have a good replacement for $.replaceWith. Writing one to simulate it for my usages. 
    node_to_replace = YAHOO.util.Dom.get(el_id); 
    if(node_to_replace){ 
    new_node = document.createTextNode(text); 
    YAHOO.util.Dom.insertAfter(new_node, node_to_replace); 
    node_to_replace.innerHTML = '' 
    } 
    return node_to_replace 
} 

function append(el_id, text){ 
    //YUI doesn't seem to have a good replacement for $.append. Writing one to simulate it for my usages. 
    node_to_replace = YAHOO.util.Dom.get(el_id); 
    if(node_to_replace){ 
    new_node = document.createTextNode(text); 
    YAHOO.util.Dom.insertAfter(new_node, node_to_replace); 
    } 
    return node_to_replace 
} 

답변

1

이 함께보십시오 :

function replaceWith(el_id, text){ 
    var node_to_replace = YAHOO.util.Dom.get(el_id); 
    if(node_to_replace){ 
     var new_node=document.createElement("div"); 
     new_node.innerHTML=text; //Parse the code inside a new element 
     var beforeNode=node_to_replace; 
     for(i=0;i<new_node.childNodes.length;i++){ 
      //Move generated children after the replaced node 
      YAHOO.util.Dom.insertAfter(new_node.childNodes[i], beforeNode); 
      beforeNode=new_node.childNodes[i]; 
     } 
     node_to_replace.parentNode.removeChild(node_to_replace);//Remove the replaced element 
    } 
    return node_to_replace 
} 

function append(el_id, text){ 
    var node_to_replace = YAHOO.util.Dom.get(el_id); 
    if(node_to_replace){ 
     var new_node=document.createElement("div"); 
     new_node.innerHTML=text; //Parse the code inside a new element 
     for(i=0;i<new_node.childNodes.length;i++){ 
      //Move generated children inside the node 
      node_to_replace.appendChild(new_node.childNodes[i]); 
     } 
    } 
    return node_to_replace 
} 
1

이 나를 위해 작동하는 것 같군 :

function replaceWith(id, innerHTML) { 
var oldNode = YAHOO.util.Dom.get(id); 
var newNode = document.createElement(oldNode.tagName); 
newNode.id = id; 
newNode.innerHTML = innerHTML; 
YAHOO.util.Dom.get(id).parentNode.replaceChild(newNode, oldNode); 
return YAHOO.util.Dom.get(id); 
} 

function append(id, appendedText) { 
var elem = YAHOO.util.Dom.get(id); 
elem.innerHTML += appendedText; 
return elem; 
}