新足迹

 找回密码
 注册

精华好帖回顾

· 参加活动 手机摄影大赛-田园的都市 (2015-2-10) 小河流水 · 来和七朵花一起记录玉米的生长过程,最新照片更新12月30日,收成拉(悲催了。。。。。。。。) (2011-9-1) 七朵花
· 航航小厨房(52) 【~~~~~~四川叶儿耙~~~~~~】 (2011-7-30) 航迹云 · 天凉好个秋--给我们的少年青年&美好青涩甜蜜的人生(原创小说连载,更新完毕) (2020-8-19) ccccjessicacccc
Advertisement
Advertisement
查看: 1697|回复: 8

紧急求助,jQuery通过ajax取得的html没法操作 [复制链接]

发表于 2011-10-26 18:59 |显示全部楼层
此文章由 Limitless 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Limitless 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我有个form,通过jquery的ajax发送,把返回的数据放到html的<div id="result">里面,数据返回成功,页面显示也正确,返回的数据都是连接,比如<a id="link" href="xxx.php?id=x"></a>
我不知道怎么用jquery选择所有的id为link的a,我试过用$('#result > a'),$('a'),$('#link'),$('#result > #link')这几个都不行,貌似是因为ajax回来的数据是放在DOM里面的。这几个方法对于result div外面的link都管用(除了设定parent是#result的之外)。

这个不管用,什么都弹不出,点连接也直接跳转到连接的地方。
$('#result > a').click(function(){      
                        alert(this.href);
                 });

});

[ 本帖最后由 Limitless 于 2011-10-26 19:09 编辑 ]
Advertisement
Advertisement

发表于 2011-10-26 19:21 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
能多贴点代码吗?
我估计load $('#result > a').click 的时候,根本就无<a>

假设你dom里已经有 <div id='result' 。。不如直接用 $('#result ').click(function(){

[ 本帖最后由 典 于 2011-10-26 18:37 编辑 ]

发表于 2011-10-26 20:02 |显示全部楼层
此文章由 showen 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 showen 所有!转贴必须注明作者、出处和本声明,并保持内容完整
页面动态生成的话,事件绑定可以考虑用live
$('#result > a').live('click', (function(){      
                        alert(this.href);
                 });
});

评分

参与人数 2积分 +6 收起 理由
+ 3 谢谢奉献
windix + 3 我很赞同

查看全部评分

发表于 2011-10-26 20:21 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
只是以前 jquery .live() 不是所有的浏览器都支持---不知道最近的jquery version怎么样了
实际上我说的 $('#result').click 是同一个思路,把handler绑定到parent element上,不管 这个div 下现在 / 将来有什么<a>元素都没有关系。通过判断event 这个object里边的参数,可以判断出是什么<a〉激发了事件。 但是once again, 这个不是所有的浏览器都支持的,

[ 本帖最后由 典 于 2011-10-26 19:33 编辑 ]

发表于 2011-10-26 20:25 |显示全部楼层
此文章由 dcc82 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dcc82 所有!转贴必须注明作者、出处和本声明,并保持内容完整
如果你这个div#result里面只是单纯<a> tag的话,根本不需要使用.live('click', (function(){  }来进行绑定,直接点的话是可以打开链接的。当你想对更新后的dom做进一步的操作的话,可以再使用live进行事件绑定,或是使用第三方插件livequery等来做也可以。

所以,我比较赞同2楼同学的观点,你的div#result可能根本就没有<a>tag,或是里面有错误</a>没有封口,或是<a>里面又套了其他什么东西,总之不是有效的<a>,最简单的方法,直接console($('#result a '))看一下就可以了,如果连object都看不到,再live也没用。

评分

参与人数 1积分 +3 收起 理由
+ 3 感谢分享

查看全部评分

发表于 2011-10-26 20:38 |显示全部楼层
此文章由 showen 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 showen 所有!转贴必须注明作者、出处和本声明,并保持内容完整

歪个楼,live不是所有的浏览器都支持吗?

我试了IE9, FF, Chrome好像都没问题
http://jsfiddle.net/ugP2D/
Advertisement
Advertisement

发表于 2011-10-26 20:40 |显示全部楼层
此文章由 porcorosso 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 porcorosso 所有!转贴必须注明作者、出处和本声明,并保持内容完整
观望中

发表于 2011-10-26 20:48 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 showen 于 2011-10-26 19:38 发表

歪个楼,live不是所有的浏览器都支持吗?

我试了IE9, FF, Chrome好像都没问题
http://jsfiddle.net/ugP2D/


我错了,老的.live()应该是有的event不支持,然后呢IE6/IE7有时候有问题(特定情况下),希望现在都没问题了

发表于 2011-10-26 21:44 |显示全部楼层
此文章由 Limitless 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Limitless 所有!转贴必须注明作者、出处和本声明,并保持内容完整
多谢,我搞定了,要放在ajaxForm的success function里面

$(document).ready(function() {
   
    $('#searchform').ajaxForm({
        
        target: '#searchresult',
        success: function(data){
        
      $('#searchresult > a').click(function(){
      $(data).empty();     
                        $.get(this.href,{},function(response){                                       
                        $('#searchresult').html(response);       
                        });
                        return false;
                 });
        
        }
        
      
    });
   
   

});

[ 本帖最后由 Limitless 于 2011-10-26 21:50 编辑 ]

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部