2 qingshuijun qingshuijun 于 2015.05.25 22:43 提问

JQ 动态输出,如何捕获元素
 <ul id="meslib"></ul>

<script>

for(i=0;i<5;i++){
                    strList += "<li data='"+arrData[i].id+"' id='list"+arrData[i].id+"'><p class='tkoff' id= 'pid"+i+"'>我是一个一段文字</p><div class='read' id='read'><img src='images/off.png' id= 'qid"+i+"' class='smlpic' alt='我是关闭按钮'></div></li>";

                }
            $("#meslib").append(strList);

    $("#meslib li").live("click",function(){

        //想要点击li 改变当前LI 里的P为显示,点击上方的按钮 整个LI 隐藏

        });

</script>

动态输出5个 li 每个li里的P初始时是隐藏的,标题H2是显示的,点击其中一个LI的时候 当前被点击的LI的P 显示出来 点击关闭按钮 后LI 隐藏

因为是动态生成的所以不好控制,求方法,用的是JQ 1.83 不要使用其他脚本库

2个回答

danielinbiti
danielinbiti   Ds   Rxr 2015.05.25 23:06
已采纳
 <html> 
<head> 
    <script src="http://lib.sinaapp.com/js/jquery/1.8.3/jquery.min.js"></script>
    <style>
        .tkoff{
            display:none
        }
    </style>
</head> 
<script>

</script>
<body> 
    <ul id="meslib"></ul>

<script>
var strList='';
var arrData = [{'id':'a'},{'id':'b'},{'id':'c'},{'id':'d'},{'id':'e'}];
                            for(i=0;i<5;i++){
                    strList += "<li data='"+arrData[i].id+"' id='list"+arrData[i].id+"'><p class='tkoff' id= 'pid"+i+"'>我是一个一段文字</p><div class='read' id='read'><img src='images/off.png' id= 'qid"+i+"' class='smlpic' alt='我是关闭按钮'></div></li>";

                }
            $("#meslib").append(strList);

    $("#meslib li").live("click",function(){

        //想要点击li 改变当前LI 里的P为显示,点击上方的按钮 整个LI 隐藏
          $('.tkoff',this).toggleClass('tkoff');
        });
    $(".smlpic").live("click",function(){
          $('p:first-child',$(this).parents('li')).addClass('tkoff');
          return false;//阻止事件冒泡,防止li触发单击事件
    })
</script>
</body> 
</html> 
qingshuijun
qingshuijun 感谢!非常感谢!已经好了
2 年多之前 回复
qingshuijun
qingshuijun 回复danielinbiti: 你试下 我加了 那个 $("#meslib li").live("click",function(){ 貌似都不对的
2 年多之前 回复
danielinbiti
danielinbiti 回复qingshuijun: .addClass('tkon')后,因为没有移除tkoff,你可以看看样式,起主导作用的是显示还是不显示
2 年多之前 回复
qingshuijun
qingshuijun 虽然还有问题 我先采纳了
2 年多之前 回复
qingshuijun
qingshuijun $("#meslib li").live("click",function() 因为是新手 以前没做过这么复杂的 这句代码是 li 的点击事件 让 P元素显示 $('p:first-child',$(this).parents('li')).addClass('tkon'); 后面是图片的点击事件 (".smlpic").live("click",function() 然后让当前li隐藏 $(this).parents('li').addClass('tkoff'); 可是我竟然点不开LI 也就是P 元素显示不出来了
2 年多之前 回复
danielinbiti
danielinbiti 回复qingshuijun: 那上面贴的代码再替换一下$('p:first-child',$(this).parents('li')).addClass('tkoff');这句改成 $(this).parents('li').addClass('tkoff');就是隐藏li了,就是你要的效果了
2 年多之前 回复
qingshuijun
qingshuijun 回复danielinbiti: 谢谢你的指教,这么晚了真的十分感谢!整个问题是 li 里的 P元素初始是隐藏的, 点击li后 显示 然后 点击那个图片隐藏 li 元素 这是两个步骤
2 年多之前 回复
danielinbiti
danielinbiti 回复qingshuijun: 我这里的tkoff是隐藏,你自己设置好像是tkon吧
2 年多之前 回复
danielinbiti
danielinbiti 回复qingshuijun: 如果li隐藏,则$(".smlpic").live("click",function(){ $(this).parents('li').addClass('tkoff'); return false; })
2 年多之前 回复
qingshuijun
qingshuijun 上面有一点小错误,你可能理解有点小问题, $('p:first-child',$(this).parents('li')).addClass('tkoff'); 这个是让P 显示出来 所以我改成了 $('p:first-child',$(this).parents('li')).addClass('tkon'); 写了CSS .tkon{display:block},P显示的问题解决了 但是点击图片 隐藏LI 貌似要怎么操作呢?
2 年多之前 回复
qingshuijun
qingshuijun 好像还有一点点 我不太明白 如何点击当前 read ID 里的图片off.png关掉当前的这个LI呢? 这个图片的尺寸是16x16 position:absolute; right:2px;top:2px;
2 年多之前 回复
devmiao
devmiao   Ds   Rxr 2015.05.25 22:52

动态生成的也可以控制,关键是你产生li的时候最好指定一个id,这样用jquery比较好定位。
隐藏就$("#id").hide()显示就$("#id").show()

Csdn user default icon
上传中...
上传图片
插入图片