加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ajax 服务器返回html字符串中元素的事件绑定方法

发布时间:2020-12-16 01:48:32 所属栏目:百科 来源:网络整理
导读:Ajax 服务器返回html字符串中元素的事件绑定方法 分类:JavaScript 2012-02-25 21:46 3951人阅读 评论(2) 收藏 举报 ajaxhtml服务器functionjqueryurl 前几天写代码遇到一个纠结的问题,就是使用Ajax技术的时候,服务器返回的HTML字符串中元素的Jquery控制或

Ajax 服务器返回html字符串中元素的事件绑定方法

分类:JavaScript3951人阅读评论(2)收藏举报

ajaxhtml服务器functionjqueryurl

前几天写代码遇到一个纠结的问题,就是使用Ajax技术的时候,服务器返回的HTML字符串中元素的Jquery控制或者说是事件绑定方法失效,但是CSS控制是正常的,而如果不采用Ajax技术,则不会产生这样的问题。后来终于发现,其实Jquery绑定事件的元素是当前页面的元素,而采用Ajax技术后,服务器返回的HTML代码中的元素隶属于另一个页面,此时其中的元素也当然不会被绑定事件。

我们来详细看一下。我们平常为元素绑定事件是这样做的,以我做的实验为例:

在主页面如main.php中加入


[javascript]view plaincopy

  1. <scripttype="text/javascript"

  2. src='#'" /span>

  3. echobase_url("items/js/index/base_all.js")?>"></script>

然后这个文件中的元素及可以用JS文件中的方法来控制了。假如说我的main.php有这样一段代码:



[php]

  • <divclass="product_photo"><ahref=""><img

  • src='#'" /span>

  • echobase_url($picture_path);

  • ?>alt=""

  • class="product_focus"></img></a></div>


  • 我想控制img这个元素。并在base_all.js写了这样一段代码:

  • $(function(){

  • $(".product_focus").bind(

  • 'mouSEOver',

  • function(){

  • $(this).parent().parent().parent().parent().parent().children(

  • '.product_display').css(

  • {

  • top:$(this).position().top+"px",

  • left:$(this).position().left-15

  • +$(this).outerWidth(false)+"px"

  • });

  • $(this).parent().parent().parent().parent().parent().children(

  • '.product_display').show();

  • });

  • $(".product_focus").bind('mouseleave',function(){

  • $(".product_display").hide();

  • });

  • });


  • 这样就可以产生相应的鼠标移入移除的效果。

    但是如果main.php中的这段代码是Ajax服务器返回的,Jquery特效就不会起一点作用。

    如:

  • $.ajax({

  • type:"POST",

  • url:"<?phpechosite_url("ajax_part/getProductDetail");?>",

  • success:function(data)

  • {$(".just").empty();

  • [javascript]

  • $(".just").html(data);

  • }

  • });


  • 其中data就是这段html代码,就会不起效果。这大概就是我当初遇到的问题,其实细细想想解决这个问题其实不难,既然Jquery只能给当前页面的元素绑定事件,那么我们就可以在Ajax返回的HTML字符串载入到当前页面后对其元素进行事件的重新绑定。方法就是这样:

    不用包含base_all.js这个JS文件,而把其中的Jquery控制代码写入$.ajax中。如下:

    function(data)

  • {

  • $(".just").empty();

  • $(".just").html(data);

  • afterLoad();

  • }

  • });

  • [javascript]

  • functionafterLoad()

  • {

  • $(function(){

  • $(".product_display").hide();

  • });

  • }



  • 将Jquery放在页面载入Html字符串之后。为元素重新绑定事件就可以了。。

    (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读