jquery find看来用不了了,如何实现,高手指点

franzhong 2012-06-21 12:15:55
ul类似如下
<ul id="myUL">
<li class="abc">1</li>
<li class="abc">1</li>
<li class="abc">1</li>
<li class="abc">1</li>
<li class="abc">1</li>
<li class="abc">1</li>
</ul>



var mainTag = $("#myUL")//ul id
var content = $(mainTag).find("li").slice(0,3);//捷取前三个
console.log(content);//[li,li,li]//正确

现有需要对mainTag清空,把内容转存,改为这样

var backupTag = mainTag.html();//console值为[li,li,li,li......]
$(backupTag).find("li").slice(0,3);//[]
没错误,输出[ ]空

如何处理呢,find好像只查找子元素,但这是字符串虽然转为了对象但里面没要求的子元素

jquery若不能用了,用js该如何捷取前三个li好呢
...全文
187 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
乌镇程序员 2012-06-21
  • 打赏
  • 举报
回复
$("#myUL li:lt(3)").remove();
001007009 2012-06-21
  • 打赏
  • 举报
回复
find是找dom节点,又不是找string

原生js用getElementsByTagName来做


lis = document.getElementById('myUL').getElementsByTagName;
li1 = lis[0];
li2 = lis[1];
li3 = lis[2];


前三个。
franzhong 2012-06-21
  • 打赏
  • 举报
回复
肿么还米人来啊~
franzhong 2012-06-21
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

引用楼主 的回复:
ul类似如下
<ul id="myUL">
<li class="abc">1</li>
<li class="abc">1</li>
<li class="abc">1</li>
<li class="abc">1</li>
<li class="abc">1</li>
<li class="abc">1</li>
</ul>



var ma……
[/Quote]
你回答的太好了,这clone我知道,没用过就没想到,我试了一下,正是想要copy一个对象,这个太简洁了
楼上说的强转换的,思路也很好,就是长字符串时,回车或特殊字符可能引起问题,我的slice(0,7)和(0,8)两个输出一模一样的slice(0,9)却又正常了,输出一看多出个<TextNode textContent=" ">很费解,大数据ajax分步主意也很正,赞,对于这问题还是clone对劲,再提问时见你必给分:thc1987 谢谢
猿敲月下码 2012-06-21
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
ul类似如下
<ul id="myUL">
<li class="abc">1</li>
<li class="abc">1</li>
<li class="abc">1</li>
<li class="abc">1</li>
<li class="abc">1</li>
<li class="abc">1</li>
</ul>



var mainTag = $("#m……
[/Quote]

jquery有个克隆方法clone();

var backupTag = mainTag.clone();// 克隆一个
var content2 = backupTag.find("li").slice(0,3);//捷取前三个
alert(content2.length);
乌镇程序员 2012-06-21
  • 打赏
  • 举报
回复
如果数据量比较大的话,还是用AJAX异步请求数据比较好。
franzhong 2012-06-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

JScript code
var backupTag = '\
<li class="abc">1</li>\
<li class="abc">2</li>\
<li class="abc">3</li>\
<li class="abc">4</li>\
<li class="abc">5</li>\
<li class="abc">6</li>\
';
backupTag = $(backu……
[/Quote]
哦~~~~~~~~~~~~~~这样也可以啊,it's working
谢谢各位
乌镇程序员 2012-06-21
  • 打赏
  • 举报
回复
var backupTag = '\
<li class="abc">1</li>\
<li class="abc">2</li>\
<li class="abc">3</li>\
<li class="abc">4</li>\
<li class="abc">5</li>\
<li class="abc">6</li>\
';
backupTag = $(backupTag);
$(document).ready( function() {
$("#myUL").html('').append(backupTag.slice(0, 3));

//测试:3秒后切换到"第二页"
window.setTimeout('$("#myUL").html("").append(backupTag.slice(3, 6));', 3000);
});
franzhong 2012-06-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

JScript code
$("#myUL li:lt(3)").remove();
[/Quote]
这个取前三个,若是变化了,再想取3-6个的时候,都被remove了
我想做个的通用ul li分页效果,把总数据一下存入一个变量,不知是否是个合理操作
不符合lazy load风格,但现在数据量小,先这样慢慢再优化,有啥高见没
franzhong 2012-06-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

lis = document.getElementById('myUL').getElementsByTagName('li');
[/Quote]
哈哈,首先谢谢你
myUL将被清空,填入筛选好的内空,就是一个分页效果
我想省一个tag,打算把值直接给一个变量,就是字符串,myUL id没多大意义
因为我把他值转走了就把他清空了
从html看<ul id="myUL"></ul>就这了
而字符串
var backupTag = '
<li class="abc">1</li>
<li class="abc">1</li>
<li class="abc">1</li>
<li class="abc">1</li>
<li class="abc">1</li>
<li class="abc">1</li>
';
以后跟据不同页数,从这个backupTag内取出对应的数据appendTo $("#myUL)
001007009 2012-06-21
  • 打赏
  • 举报
回复
lis = document.getElementById('myUL').getElementsByTagName('li');

briwang 2012-06-21
  • 打赏
  • 举报
回复
lis = document.getElementById('myUL').getElementsByTagName;
li1 = lis[0];
li2 = lis[1];
li3 = lis[2];

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧