2013-05-08 1 views
2

일부 JavaScript를 사용하여 새 HTML 요소를 만든 다음 MooTools 삽입 메서드를 사용하여 반환합니다.HTML 요소 반환

display: function() { 
     var threadTitle = new Element('h2',{ 
      'class': 'postItem', 
      'data-id': this.id, 
      'text': this.title, 
      'href': '#', 
      events: { 
       click: function(){ 
        $('newComment').setStyle('visibility', 'visible'); 
        var id = this.get('data-id'); 
        $('thread').value = id; 
        callThread(id); 
       } 
      } 
     }); 

     var deleteT = new Element('a',{ 
      'class': 'deleteItem', 
      'data-id': this.id, 
      'text' : 'Delete', 
      'href' : '#', 

      events: { 
       click: function(){ 
        var deleteID = this.get('data-id'); 
        deleteThread(deleteID) 
       } 
      } 
     }); 

     var editBtn = new Element('input',{ 
      'class': 'mt-btn', 
      'value': 'Edit', 
      'type': 'button', 
      'data-id': this.id, 
      'text' : 'Edit', 
      'href' : '#', 
      events: { 
       click: function(){ 


       } 
      } 
     }); 



     deleteT.inject(threadTitle); 
     editBtn.inject(threadTitle); 
     return threadTitle; 
    } 
}); 

이것은 h2에 삽입 할 때 분명히 h2 내부의 새로운 요소를 반환합니다. H2 각각 외부를 만들 수있는 방법이 있나요, 그래서 감각

<h2></h2> 
<a></a> 
<input></input> 

에 나는 editBtn.inject(threadTitle, 'after');를 사용하는 Mootools의 방법을 사용하여 시도했지만이 작동하지 않는 것 아무것도 반환됩니다. 그래서 질문에 의해 h2 요소에 삽입되지 않은 채로 페이지의 요소를 어떻게 반환 할 것인가입니다.

+1

잠깐, jQuery를 사용하고 계십니까? – Ian

+0

내가 이것을 MooTools 응답을 요구하는 질문으로 게시 한 이유는 jQuery 응답을받는 것처럼 보입니다. 정말 도움이 비록이 의견 주셔서 감사합니다. – joshuahornby10

+0

전 농담이에요. 날 믿어, 나는 완전히 이해한다. 'jquery'가 아닌'mootools'에 태그를 지정하면 jQuery 응답을 얻지 않아도됩니다. – Ian

답변

1

editBtn.inject(threadTitle, 'after');을 사용하는 MooTools 방법을 사용해 보았지만 작동하지 않는 것으로 보이며 아무것도 반환되지 않습니다.

문제가 있다고 생각하면 threadTitle은 부모님이있는 경우와 같지 않습니다. 부모가 없다면 MooTools는 "후"에 아무 것도 주입하지 않으므로 부모 요소에 주입해야합니다.

threadTitle을 DOM에 처음 입력하면 editBtn.inject(threadTitle, 'after');이 잘 작동합니다.

작동하지 않는,이 비교 : Live Copy

var p = new Element('p'); 
p.set("html", "This is the <code>p</code> element"); 

var div = new Element('div'); 
div.set("html", "This is the <code>div</element> inserted <em>after</em> the <code>p</code>"); 
div.inject(p, 'after'); 

p.inject(document.body); 

...이 함께 수행하는 : Live Copy

var p = new Element('p'); 
p.set("html", "This is the <code>p</code> element"); 
p.inject(document.body); 

var div = new Element('div'); 
div.set("html", "This is the <code>div</element> inserted <em>after</em> the <code>p</code>"); 
div.inject(p, 'after'); 

이 ... 차이가 p 요소가되었다는 것 그 후에 DOM에 추가하여 div을 주입하려고합니다.

+0

아, 알겠습니다. 서류에 주사하는 대신 하나의 질문을 하는게 좋을거야. 내가 div에 주사 할 수 있을까? 이것이 p.inject ($ (divName))일까요? – joshuahornby10

+0

@ joshuahornby10 : 요소에 부모가있는 한 부모가 무엇인지는 중요하지 않습니다. 예를 들어, 이것을보십시오 : http : // jsfiddle.net/p2M3h/2/부모님은 아직 DOM에 있지 않은데, 그 아이 중 한 명 이후에 주사하게됩니다. 이 문제는'bar.inject (foo, 'after')'는 기본적으로 원시 DOM 연산'foo.parentNode.insertBefore (bar, foo)'로 구현되므로'foo'에 부모가 없다면, 그것은 작동하지 않을 수 있습니다. –

+0

누군가 MooTools라고 말 했나요? – samosaris