2009-11-17 1 views
0

웹 사이트를 구동 할 일부 "사이트 정의"파일 용 XML 파서를 천천히 작성하고 있습니다. 많은 요소들이 같은 방식으로 파싱 될 것이고 필자는 각각의 값을 유지할 필요가 없을 것이다.

The XML

The parser so far

내 질문은 실제로 매우 간단하다 : 어떻게이 클래스의 기능에 JQuery와 조종 장치를 사용할 수 있습니까? $ (이)를 어떻게 전달할 수 있습니까? DOM 객체와 때로는 jQuery 객체를 가리키는 경우가 있지만, 약간 흐릿한 것임을 알고 있습니다. 나의 함수의

는 :

function parseXML(xml) { 
    $("book, site", xml).children().each(function() { 
     var label = $(this).get(0).tagName; 
     var text = $(this).text(); 
     var key = toCamelCase(label); 
     if ((key in siteData) && (text != -1)){ 
     if (isArray(siteData[key])) 
     { 
      $(this).children().each(function(){ 
       var childLabel = $(this).get(0).tagName; 
       var childText = $(this).text(); 
       var childKey = toCamelCase(childLabel); 
       if(isArray(siteData[key][childKey])) 
       { 
        siteData[key][childKey].push(childText); 
       } 
       else { 
        siteData[key].push(childText); 
       } 
      }); 
     } 
     else 
     { 
      siteData[key] = text; 
      } 
     }; 
    }); 
    } 
    }); 

나는 수업 시간에

var label = $(this).get(0).tagName; var text = $(this).text(); var key = toCamelCase(label); 

을 배치 할, 그래서

var child = new Element(); and var subchild = new Element(); 

처럼 뭔가를하고 child.label , child.text and child.key을 사용할 수 있습니다 ... 하지만 다시, jquery 메서드를 이들과 함께 사용하는 방법을 모르겠습니다 ... 노드가 더 있습니다. 처리하고 나는 계속 물건을 같이하고 싶지 않다. var label = $(this).get(0).tagName; and then var childLabel = $(this).get(0).tagName;

고마워.

답변

1
var app = {}; 
app.element = function(data) { 
    return function() { 
    var _text = data.get(0).tagName, _label= data.text(), _key = toCamelCase(_label); 
     var that = {}; 
     that.label = function() { 
      return _label; 
     } 
     that.text = function() { 
      return _text; 
     } 
     that.key = function() { 
      return _key; 
     } 
     return that; 
    }(); 
}; 
app.instanceA = app.element($(this)); 
document.writeln(app.instanceA.label()); 

좋아요. 그래도 작동하지만 가장 좋은 방법인지는 확실하지 않습니다.

+0

oops, collision .text() ... 이름을 변경해야합니다. 그것 이외에, 그것은 충분히 작동합니다. 이것이 최선의 방법인지 확실하지 않습니다. –

+0

당신이해야 할 일은 'JavaScript : The Good Parts'라는 멋진 책과 진짜 단편을 얻는 것입니다. 방금 완료했지만 상속에 대한 몇 가지 장이 있습니다. 프로토 타입을 사용하여이를 수행하는 더 좋은 방법이 있습니다. 그러나 나는 책을 다시 읽을 필요가있다; – Shawn

+0

나는 생각을 가지고있다. – Shawn