당신은 문자열에서 XML로드하는 경우 :
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Title</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<style type="text/css">
ul ul, span {
display:none;
}
</style>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
var xml = '<container><data name="apple" definition="A sweet fruit. bla bla bla"/><data name="bat" definition="bla bla bla"/><data name="book" definition="bla bla bla"/><data name="cat" definition="bla bla bla"/><data name="cup" definition="bla bla bla"/></container>';
var xmlDoc = $.parseXML(xml);
var $xml = $(xmlDoc).find('container');
var letters = new Object();
// loop through all the definitions
$xml.children().each(function(k, v) {
var letter = $(v).attr('name').charAt(0);
// only add letters not already added
if (!letters[letter]) {
$('#definitions')
.append('<li><a href="#" id="' + letter + '">' + letter + '</a><ul></ul></li>');
letters[letter] = 'f';
}
// append definitions
$('#definitions a#' + letter + ' + ul').append('<li><a href="#">' + $(v).attr('name') + '</a><span> - ' + $(v).attr('definition') + '</span></li>');
});
// bind click events on the letters to show/hide the words
$('#definitions li > a').click(function() {
$(this).next('ul').toggle();
return false;
});
// bind click events on the words to show/hide the definitions
$('#definitions ul li a').click(function() {
$(this).next('span').toggle();
return false;
});
});
</script>
</head>
<body>
<h1>Defintions</h1>
<ul id="definitions"></ul>
</body>
</html>
또는 당신이 AJAX를 통해로드하는 경우와 자바 스크립트를 교체 :
$(function() {
var $xml;
var letters = new Object();
if ($xml == null) {
$.ajax({
url : 'definitions.xml',
dataType : 'xml',
success : function (xml) {
$xml = $(xml).find('container');
console.log($xml);
$xml.children().each(function(k, v) {
var letter = $(v).attr('name').charAt(0).toUpperCase();
// only add letters not already added
if (!letters[letter]) {
$('#definitions')
.append('<li><a href="#" id="' + letter + '">' + letter + '</a><ul></ul></li>');
letters[letter] = '.'; // store this key in the map (no actual value)
}
// append definitions
$('#definitions a#' + letter + ' + ul').append('<li><a href="#">' + $(v).attr('name') + '</a><span> - ' + $(v).attr('definition') + '</span></li>');
});
// bind click events on the letters to show/hide the words
$('#definitions li > a').click(function() {
$(this).next('ul').toggle();
return false;
});
// bind click events on the words to show/hide the definitions
$('#definitions ul li a').click(function() {
$(this).next('span').toggle();
return false;
});
}
});
}
});
것은 이것이 아닐 수 있음을주의하세요 큰 XML 파일로 최상의 솔루션; 브라우저는 페이지를 렌더링하기 전에 먼저 전체 파일을 전송해야합니다. 따라서 페이지에 a-z
목록을 만든 다음 사용자가 편지를 클릭 할 때 단어를 동적으로로드하는 대체 솔루션을 조사해야 할 수 있습니다. 따라서 관련성이 높고 필요한 단어 인 & 정의 만 필요에 따라 전송됩니다. 동일한 정의에 대한 중복 요청을 피하기 위해이를 캐시 할 수도 있습니다.