使用jquery创建动态列表

mos*_*osh 8 jquery dynamic

首先让我说我在论坛上看到了类似的问题,但是我找不到一个我理解并适用于我的情况的问题.

话虽如此,我的问题如下:

我想构建一个动态变化的列表.(该列表显示当前登录的用户名).

假设登录用户的名称存储在array = ["name1","name2","name3"....]中,并且数组中的数据是更新后的数据.

形式是:

<div id="users">
    <ul class="list">
      <li>
        <h3 class="name">name1</h3>
      </li>
      <li>
        <h3 class="name">name2</h3>
      </li>
    </ul>
  </div> 
Run Code Online (Sandbox Code Playgroud)

如何使用jquery修改列表,以显示数组中的名称并根据其内容动态更改?

非常感谢.

Nat*_*ate 9

你真的不需要使用一个事件.获得更新列表后,直接调用update方法.

但是,正如其他用户所指出的那样,使用数据绑定库可能会更好.

start_with.html

<div id="users">
  <ul class="list">
    <li>
      <h3 class="name">name1</h3>
    </li>
    <li>
      <h3 class="name">name2</h3>
    </li>
  </ul>
</div> 
Run Code Online (Sandbox Code Playgroud)

update_list.js

// Note: This method will clear any user selections and may cause other problems since the previous list is deleted and recreated.
function update_list(updated_users) {

  // clear the existing list
  $('#users .list li').remove();

  $.each(updatedUsers, function(index,userName) {
    $('#users .list').append('<li><h3 class="name">'+userName+'</h3></li>')
  });

}
Run Code Online (Sandbox Code Playgroud)

example_1.js

// Get the updated list
var updated_users = ["name1", "name2", "name3"];
// Update it
update_list(updated_users);
Run Code Online (Sandbox Code Playgroud)

after_example_1.html

<div id="users">
  <ul class="list">
    <li><h3 class="name">name1</h3></li>
    <li><h3 class="name">name2</h3></li>
    <li><h3 class="name">name3</h3></li>
  </ul>
</div> 
Run Code Online (Sandbox Code Playgroud)

example_2.js

// Example by AJAX get using a made-up URL
$.get('http://api.example.com/users/active.json', function(data) {
  // What you do with data depends on what the API returns...
  // I'm assuming it returns an array of users.
  // data = ['user1', 'user2', 'user3'];

  update_list(data);
})
Run Code Online (Sandbox Code Playgroud)

after_example_2.html

<div id="users">
  <ul class="list">
    <li><h3 class="name">user1</h3></li>
    <li><h3 class="name">user2</h3></li>
    <li><h3 class="name">user3</h3></li>
  </ul>
</div> 
Run Code Online (Sandbox Code Playgroud)

注意:此方法的一个缺点是旧列表被破坏.这意味着,如果您的列表中包含输入框,则用户输入的内容将在更新时销毁.如果列表中有状态,则如果还要保留元素的状态,则必须使用其他方法更新列表.