2011-04-11 4 views
0

자바 스크립트 클래스를 처음 사용하거나 클래스를 실제로 지원하지 않습니다.자바 스크립트 클래스 : 요소 생성 및 삭제

어쨌든 DOM 요소를 만들고 파괴 할 수있는 함수를 만들고 싶습니다. 나는 요소를 만드는 것이 좋지만 그것들을 파괴하는 것은 조금 더 까다 롭습니다.

어떻게 ID를 제공하지 않고도 destroy를 호출 할 수 있습니까?

http://api.jquery.com/category/manipulation/

당신은 g :

function WorkZone() { 
    this.create = function(id) { 
     this.div = $('<div>', { 
      id: id, 
      class: 'work-zone' 
     }); 
     this.div.appendTo('body'); 
    } 

    this.destroy = function(id) { 
     this.div.remove(); 
    } 
} 
+0

:

function WorkZone() { this.create = function(id) { // Remember the element this.element = $('<div>', { id: id, class: 'work-zone' }); // This could be chained to the above, // but it's a lot easier to read if it isn't this.element.appendTo('body'); } this.destroy = function() { // Use element reference this.element.remove(); } } $(function() { var zone = new WorkZone(); zone.create(); zone.destroy(); }); 

는하지만 그들은 오히려 각 인스턴스는 자신의 복사본을하는 것보다, 공유되도록 WorkZone.prototype의 방법을 넣어 훨씬 더 있습니까? ? – Neal

+0

jQuery 태그가 있어야합니까? '$ (...) '이 진행 중입니다 ... –

+0

jQuery 나 다른 프레임 워크를 사용하고 있습니까? 태그를 추가하거나 명시 적으로 태그를 지정해야합니다. – intuited

답변

0

사용 jQuery를 대신 사용자 지정 코드를 만드는이 작업을 수행하려면 :

var WorkZone = { 
    wz: null, 
    create: function(id) { 
     this.wz = $('<div>', { 
      id: id, 
      class: 'work-zone' 
     }).appendTo('body'); 
    }, 

    destroy: function() { 
     this.wz.remove(); 
    } 
} 

$(function() { 
    var zone = WorkZone; 
    zone.create('new_id'); 
    zone.destroy(); 
}); 
+0

처럼 보이지만 jQuery가 이미 사용 중입니다. – Neal

0

이 시도 완전한 브라우저 지원과 최적의 코드, 다양한 종류의 선택기로 이러한 종류의 DOM 조작을 수행 할 수 있습니다.

+0

나는 OP가 WorkZone의 여러 인스턴스를 만들고 싶어한다고 생각합니다. – RobG

+0

@RobG OP가 여전히 – Neal

0

과 같이 :

function WorkZone() { 
    this.create = function(id) { 
     $('<div>', { 
      id: id, 
      class: 'work-zone' 
     }).appendTo('body'); 
    } 

    this.destroy = function(id) { 
     $(id).remove(); 
    } 
} 

$(function() { 
    var zone = new WorkZone(); 
    zone.create(); 
    zone.destroy(); 
}); 
0
function WorkZone(id) { 
    this.create = function() { 
     $('<div>', { 
      id: id, 
      class: 'work-zone' 
     }).appendTo('body'); 
    } 

    this.destroy = function() { 
     $('#'+id).remove(); 
    } 
} 

$(function() { 
    var zone = new WorkZone("ohyeababy"); 
    zone.create(); 
    zone.destroy(); 
}); 

이 최종 목표를 달성 할 수있는 최적의 방법은 아니지만, 코드에서 중복에 대한 즉각적인 수정입니다. :)

2

개체의 속성으로 요소에 대한 참조 만 유지하면됩니다. destroy 메소드는 요소에 대한 참조를 직접 가지므로 id가 필요하지 않습니다. 당신이 ID없이 파괴되는 것보다

function WorkZone() { 
    this.element; 
} 

WorkZone.prototype = { 
    create: function(id) { 
    this.element = $(..)...// create element, add to document 
    }, 
    destroy: function() { 
    this.element.remove(); 
    } 
} 

var zone = new WorkZone(); 
zone.create(id); 
zone.destroy(); 
관련 문제