+ -
当前位置:首页 → 问答吧 → 为什么append后里面元素无法使用jquery

为什么append后里面元素无法使用jquery

时间:2009-04-15

来源:互联网


$(function() {
        var html='<p>hello</p>';
        $("div a").click(function(){
            $("#text").append($(html));
         });
        
        $("p").click(function(){
            $(this).css("background-color","#333");
         });
    });


<div><a>this is a text</a></div>

  <div id="text"></div>      //[b][size=3]为什么append后里面元素无法使用jquery[/size][/b]

  <p>hello everyone</p>

作者: jhcwgy   发布时间: 2009-04-15

没问题啊,你想要什么效果?

作者: zcm211   发布时间: 2009-04-15

错在<p>hello</p>是异步过来的元素
$("p").click(function(){
            $(this).css("background-color","#333");
         });
是监听不到的 $(html)); 改为(html)
$(function() {
        var html='<p>hello</p>';
        $("div a").click(function(){
            $("#text").append(html);
            $("p").click(function(){
            alert('sdf');
         });
         });
    });

作者: fudg1211   发布时间: 2009-04-15

引用
引用第2楼fudg1211于2009-04-15 13:16发表的  :
错在<p>hello</p>是异步过来的元素
$("p").click(function(){
            $(this).css("background-color","#333");
         });
是监听不到的 $(html)); 改为(html)
.......


没看明白,上面的语句可以执行啊,解释下为什么是异步过来的?

作者: zcm211   发布时间: 2009-04-15

上面语句是不可以运行的 你那边可以运行吗??
你在重新测测
我理解异步过来数据就是本身body里面没有 后通过js调用而产生新的元素 就如同ajax
监听异步过来的元素一定要把js代码放在元素的下面 这样才能监听的到

作者: fudg1211   发布时间: 2009-04-15

不是点击就自动添加“hello”吗,如果是这样的话我这里的确可以执行~~
不知道$(html)里面是什么东西,用write打印输出“[Objec object]”

楼主的提问里哪里用到异步了?我咋没看到...

作者: zcm211   发布时间: 2009-04-15

这个时候应该用live方法

$(function() {
        var html='<p>hello</p>';
        $("div a").click(function(){
            $("#text").append($(html));
         });
        $("p").live("click",function(){
            $(this).css("background-color","#333");
         });
    });

作者: gordianyuan   发布时间: 2009-04-15

引用
引用第6楼gordianyuan于2009-04-15 13:51发表的  :
这个时候应该用live方法

$(function() {
        var html='<p>hello</p>';
        $("div a").click(function(){
.......


看了LS的回复,live函数和直接使用选择器有设么区别呢,手册没有写。

作者: zcm211   发布时间: 2009-04-15

.live好像解决问题了,谢谢。
但在下面情况还有些问题(不知大家用过jquery ui没有?)
<!doctype html>
<html lang="en">
<head>
    <title>text</title>    
    <script src='javascript/jquery-1.3.2.min.js' type="text/javascript"></script>
    <script src="javascript/jquery-ui-1.7.custom.min.js" type="text/javascript"></script>
    <link rel="stylesheet" href="css/jquery-ui-1.7.custom.css"/>
    <script type="text/javascript">
        $(function() {
                  
        $("#tabs").tabs();
        
        var html='<div id="tabs"><ul><li><a href="">ajax1</a></li></ul></div>';
        
        $("div a").live('click',function(){
            $("#text").append($(html));
         });
        
        
    });
    </script>    
</head>
<body>
  <div><a>this is a text</a></div>
  <div id="text"></div>                                 //没能显示应有样式
  <div id="tabs">
    <ul>
        <li><a href="">ajax2</a></li>    //显示了应有样式
    </ul>
    
</div>

</body>
</html>

作者: jhcwgy   发布时间: 2009-04-15

先打好基础,那个元素根本没有初始化过,怎么会有显示呢

作者: gordianyuan   发布时间: 2009-04-15

$(function() {
        var html='<p>hello</p>';
        $("div a").click(function(){
            $("#text").append(html);
            $("p").click(function(){
            $(this).css("background-color","#333");
         });
         });
    });
这段代码还不能解决你问题啊  

作者: fudg1211   发布时间: 2009-04-15

感觉应该这么写吧 append(html)

作者: baljeans   发布时间: 2009-04-18

相关阅读 更多