如何使用javascript和JQuery创建包含定义的列表?
我熟悉HTML5和CSS3,刚刚开始学习JS。我需要帮助创建一个字符串变量列表,并将定义附加到所有这些变量 基本上,我需要一个两列的表,其中左列是字符串列表,当您单击单词时,它会调出右侧的定义。我还需要确保当你点击不同的单词时页面不会重新加载 这张照片(下面的链接)最好地说明了我要创造的东西如何使用javascript和JQuery创建包含定义的列表?,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,我熟悉HTML5和CSS3,刚刚开始学习JS。我需要帮助创建一个字符串变量列表,并将定义附加到所有这些变量 基本上,我需要一个两列的表,其中左列是字符串列表,当您单击单词时,它会调出右侧的定义。我还需要确保当你点击不同的单词时页面不会重新加载 这张照片(下面的链接)最好地说明了我要创造的东西 有多种方法可以实现这一点,但如果您想具体使用JavaScript生成从数据到数据的所有内容(例如,如果您已经从AJAX请求到某些API获取了数据),那么您可以获取/创建一个对象,其键值对分别与单词及其定义匹
有多种方法可以实现这一点,但如果您想具体使用JavaScript生成从数据到数据的所有内容(例如,如果您已经从AJAX请求到某些API获取了数据),那么您可以获取/创建一个对象,其键值对分别与单词及其定义匹配:
var dictionary = {
first: '<h2>First</h2> Is the 1st definition.',
second: '<h2>Second</h2> Is the 2nd definition.',
third: '<h2>Third</h2> Is the 3rd definition.'
};
请注意,单击处理程序正在词典的当前迭代中捕获上下文中的定义
下面是使用jQuery实现此方法的一个完整但最少的示例,并附有一些解释性注释:
$(函数(){
//定义一个单词词典,可能是从API获取的
变量字典={
第一:“第一是第一个定义。”,
第二条:“第二条是第二条定义。”,
第三:“第三是第三个定义。”
};
//对于每个单词/定义对。。。。
$.each(字典、函数(单词、定义){
//创建一个列表项来保存单词
var listItem=$(“”).addClass('word').text(word);
//为单词项指定一个单击处理程序,以便在单击时显示其定义
listItem.click(函数(){
//将定义HTML设置为当前单词的定义
$('#定义').html(定义);
//仅将高亮显示类添加到当前元素
$(“#words li”).removeClass('highlight');
$(this.addClass('highlight');
});
//将其附加到DOM中的单词列表中
$('#字ul')。附加(列表项);
});
});代码>
.panel{
显示:内联块;
浮动:左;
边框样式:实心;
边框宽度:中等;
最小宽度:200px;
最小高度:250px;
保证金:5px;
填充物:5px;
}
.word.highlight{
字体大小:粗体;
}
.字{
列表样式类型:无;
}
我想我得到了你想要的,花了我一段时间。现在唯一需要做的就是编辑数组中的值以显示其他文本。(已设置增量)
$(文档).ready(函数(){
变量列表={
“阿尔法”:“阿尔法文本”,
“好极了”:“好极了文本”,
“查理”:“查理文本”,
“Delta”:“Delta是希腊字母表中的第四个字母。
在希腊数字系统中,它的值为4。”,
“Echo”:“Echo Text”,
“狐步舞”:“狐步舞文本”,
“高尔夫”:“高尔夫文本”,
“酒店”:“酒店文本”,
"印度":"印度文本",,
“朱丽叶”:“朱丽叶文本”,
“基洛”:“基洛文本”,
“利马”:“利马文本”,
“迈克”:迈克发短信,
“十一月”:十一月文本,
“奥斯卡”:奥斯卡文本,
‘爸爸’:‘爸爸文本’,
“魁北克语”:“魁北克语文本”,
“罗密欧”:“罗密欧文字”,
“Sierra”:“Sierra文本”,
‘探戈’:‘探戈文字’,
“统一”:“统一文本”,
“Victor”:“Victor文本”,
“威士忌”:“威士忌文本”,
“X射线”:“X射线文本”,
‘洋基’:‘洋基文本’,
“祖鲁语”:“祖鲁语文本”
};
$.each(列表、函数(索引、值){
var listitem=$(“”);
$('.letterlist').append(listitem.text(index));
});
$('.letterlist li')。在('click',function()上{
//从上一项中删除类
$('.selected').removeClass('selected');
//将类添加到当前项
$(this.addClass('selected');
var block=$('.block.right');
var descr=$('');
var值=$(this.text();
//空标题和内容
block.children('h1').empty();
block.children('.content').empty();
//添加标题和内容
block.children('h1')。文本(值);
block.children('.content').append(descr.html(list[value]);
});
});代码>
.block{
宽度:250px;
高度:400px;
浮动:左;
字体系列:Arial,无衬线;
边框:3倍实心#000;
溢出y:自动;
}
.信件清单,
李先生{
列表样式:无;
填充:0 20px;
}
.字母列表李被选中{
颜色:#f00;
背景#fac6c7;
}
.字母列表李:悬停{
光标:指针;
}
.左{
字号:28px;
}
.内容{
背景#fac6c7;
字体大小:20px;
利润率:10px 20px 20px;
填充:16px 12px;
}
h1{
文本转换:大写;
文本对齐:居中;
利润率:10px0;
}
p{
保证金:0;
}
选择一个项目
首先:将您的关注点分开。这意味着您可以用HTML保存模板,用CSS保存样式,用JS保存应用程序逻辑
JS
var definitions = {
alpha: 'Alpha definition',
beta: 'Beta definition'
};
var $definitionsList = $('ul#definition-list');
var $definitions = $(document.createDocumentFragment());
for (var key in definitions) {
$('<li/>')
.text(key)
.on('click', displayDefinition.bind(null, key, definitions[key]))
.appendTo($definitions);
}
$definitionsList.append($definitions);
function displayDefinition(name, definition) {
$('#definition-display h1').text(name);
$('#definition-display p').text(definition);
}
#definition-list {
// Some cool styles for the list
}
#definition-list li {
// Some cool styles for the list items
}
创建一个对象hashmap。你的图片和问题中给出的信息之间有很长的距离,所以这个问题实在太宽泛了,似乎一个标签式内容插件将是一个简单的解决方案。如果您使用的是前端框架,那么他们通常会内置这些框架
var definitions = {
alpha: 'Alpha definition',
beta: 'Beta definition'
};
var $definitionsList = $('ul#definition-list');
var $definitions = $(document.createDocumentFragment());
for (var key in definitions) {
$('<li/>')
.text(key)
.on('click', displayDefinition.bind(null, key, definitions[key]))
.appendTo($definitions);
}
$definitionsList.append($definitions);
function displayDefinition(name, definition) {
$('#definition-display h1').text(name);
$('#definition-display p').text(definition);
}
<body>
<ul id="definition-list"></ul>
<div id="definition-display">
<h1></h1>
<p></p>
</div>
</body>
#definition-list {
// Some cool styles for the list
}
#definition-list li {
// Some cool styles for the list items
}