<li>
元素与数组操作<li>
元素<li>
是HTML中的列表项元素,通常用于<ul>
(无序列表)或<ol>
(有序列表)中。在jQuery中,可以通过选择器来选取和操作这些元素。
数组是JavaScript中用于存储有序数据集合的对象,可以包含任何类型的元素。
<li>
列表// 假设有一个数组
const fruits = ['Apple', 'Banana', 'Orange', 'Mango'];
// 将数组转换为<li>元素并添加到<ul>中
const $ul = $('<ul>');
$.each(fruits, function(index, value) {
$ul.append($('<li>').text(value));
});
// 添加到DOM中
$('body').append($ul);
<li>
元素获取数组// 从现有<ul>中获取所有<li>的文本内容到数组
const itemsArray = $('ul li').map(function() {
return $(this).text();
}).get();
console.log(itemsArray); // 输出: ["Apple", "Banana", "Orange", "Mango"]
<li>
元素// 获取所有<li>元素
const $listItems = $('ul li');
// 转换为数组并排序
const sortedItems = $listItems.get().sort(function(a, b) {
return $(a).text().localeCompare($(b).text());
});
// 清空并重新添加排序后的元素
$('ul').empty().append(sortedItems);
<li>
元素事件不生效原因:事件绑定在元素创建之前,或使用了错误的委托方式 解决:
// 使用事件委托
$('ul').on('click', 'li', function() {
console.log($(this).text());
});
原因:数据变化后没有重新渲染DOM 解决:
function renderList(items) {
$('ul').empty();
items.forEach(item => {
$('ul').append($('<li>').text(item));
});
}
// 更新数组后调用renderList
fruits.push('Grape');
renderList(fruits);
<li>
原因:频繁的DOM操作导致性能下降 解决:
// 使用文档片段批量添加
const fragment = document.createDocumentFragment();
fruits.forEach(fruit => {
const li = document.createElement('li');
li.textContent = fruit;
fragment.appendChild(li);
});
$('ul').append(fragment);
$('ul').on('dblclick', 'li', function() {
const $li = $(this);
const text = $li.text();
$li.html(`<input type="text" value="${text}">`);
$li.find('input').focus().blur(function() {
$li.text($(this).val());
});
});
$('ul').sortable({
update: function(event, ui) {
// 排序后可以获取新的顺序数组
const newOrder = $(this).find('li').map(function() {
return $(this).text();
}).get();
console.log(newOrder);
}
});
通过结合jQuery的DOM操作和JavaScript数组方法,可以高效地处理列表数据和界面之间的交互。