如何使用javascript和JQuery创建包含定义的列表?

如何使用javascript和JQuery创建包含定义的列表?,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,我熟悉HTML5和CSS3,刚刚开始学习JS。我需要帮助创建一个字符串变量列表,并将定义附加到所有这些变量 基本上,我需要一个两列的表,其中左列是字符串列表,当您单击单词时,它会调出右侧的定义。我还需要确保当你点击不同的单词时页面不会重新加载 这张照片(下面的链接)最好地说明了我要创造的东西 有多种方法可以实现这一点,但如果您想具体使用JavaScript生成从数据到数据的所有内容(例如,如果您已经从AJAX请求到某些API获取了数据),那么您可以获取/创建一个对象,其键值对分别与单词及其定义匹

我熟悉HTML5和CSS3,刚刚开始学习JS。我需要帮助创建一个字符串变量列表,并将定义附加到所有这些变量

基本上,我需要一个两列的表,其中左列是字符串列表,当您单击单词时,它会调出右侧的定义。我还需要确保当你点击不同的单词时页面不会重新加载

这张照片(下面的链接)最好地说明了我要创造的东西


有多种方法可以实现这一点,但如果您想具体使用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
        }