2014-09-25 2 views
1

이것은 정말 간단한 질문이지만 검색을 통해 답변을 찾지 못했습니다.jQuery를 사용하여 단일 페이지 응용 프로그램에서 DOM을 업데이트하는 방법은 무엇입니까?

SPA를 만들 때 jQuery를 사용하여 콘텐츠를 업데이트하는 과정은 무엇입니까? 단순히 노드 내용을 삭제하고 새로운 HTML을 작성합니까?

이 같은 SPA 페이지가 있다고 가정 : 여기

이 문제는 명확하게하는 몇 가지 코드의

<div id='nav'> 
    <div class='link'>home</div> 
    <div class='link'>about</div> 
    ... 
</div> 

<div id='page_content'> 
    ... 
</div> 

비행 중계기 항목에 사용자가 클릭, jQuery를 콘텐츠에 대한 HTTP GET 않는 경우 : var content = .... 페이지를 업데이트하려면 페이지를 $('#page_content').html(content)으로 업데이트하면됩니까?

+0

프레임 워크를 사용하고 계십니까? 이벤트를 방송하고 구독 할 수 있습니다. – corvid

+0

프레임 워크를 만들고 있는데 이벤트가 수신 된 후 jQuery로 HTML을 업데이트하는 방법에 대해 궁금합니다. –

답변

2

SPA에 의해이 같은 단일 페이지 솔루션, 뭔가 의미하는 경우 페이지를 새로 고치지 않고 외부 파일을로드하려면 ...

<!-- HTML --> 
<div id = "page-area" style = "width: 800; height: 600; border: 1px solid silver"></div> 

// Javascript 
$('#page-area').load('your-page.html'); 

// or 
$.get('your-page.html', function(data){ 
    $('#page-area').html(data); 
}); 

합니다.

또는 요소 컨텐츠 업데이트하려면 다음 요소는 기존의 스타일을 채택 이런 식으로 페이지에 추가하고 동일한 ID 속성이 다른 요소와 충돌 것

var pagecontent = "<h1>New Content</h1><p>Some new content</p>"; 

$('#page-area').html(pagecontent); 

참고.

+0

예, 이것이 제가 묻는 것입니다. "이 방법으로 페이지에 추가 된 요소는 기존 스타일을 채택하고 동일한 id 속성을 가진 다른 요소와 충돌합니다." 그게 더 좋은 방법이나 내가해야 할 다른 것이 있다는 뜻입니까? –

+0

알고 있어야 할 것이 있습니다. 기존 페이지 요소와 동일한 ID 특성을 갖는 요소가 포함 된 외부 페이지를 호출하지 않도록하는 명명 규칙을 채택하십시오. jQuery가 #id로 요소를 선택하면 이러한 요소와 관련된 모든 코드가 오작동을 일으킬 수 있습니다. 참조 : http://stackoverflow.com/questions/902839/how-to-select-all-elements-with-a-particular-id-in-jquery – TheStatehz

2

당신이하는 일에 따라 달라집니다. ,

$("#divID").innerhtml("Hello World"); 

기타 :

$("#textBoxID").val("ValueYouWant"); 

당신은과 같이 테이블에 테이블 행을 추가 할 수 있습니다 :

$("#tableID").append("<tr<td>blahblah</td></tr>"); 
당신은 사업부의 HTML을 업데이트 할 수 있습니다

당신은 같은 텍스트 상자의 값을 변경할 수 있습니다 귀하의 질문은 매우 모호하지만, 이것이 도움이되기를 바랍니다.

+0

나는 마지막 것을 묻는다. 페이지 내용이'div # content'에 있다고 가정하자. 사용자가 새 페이지를 클릭하면 '.innerhtml'을 호출하여 새로운 페이지 내용으로 바꿉니다. –

+1

예, 말했듯이 div의 HTML을 업데이트 할 수 있습니다. 어떤 코드를 게시하지 않았으므로 어떤 작업을하는지 확신 할 수는 없지만 특정 div의 HTML을 수정하려고하는 것처럼 들립니다. 그렇다면 위 또는 다음을 사용할 수 있습니다. $ ("# content") .html ("안녕하세요"); –

관련 문제