jquery的.html()动态遍历html代码后,对原有的css和js无法控制问题

一下代码片段是我在jquery中通过动态循环,把一段html代码通过jquery的.html()方法写进去的,现在,这个图片轮换的效果出不来,我看网上的说法,就是.html()后,对css和js不受控制,如何改写才能让我这段html代码中的css有效,尤其是data-rel是调用的外部js文件的图片轮换效果!请教,请教!
var i;
var tempstr="";
var allimgdivstr="";
$.each(tempresponse['data'],function(key,val){
i=key+1;
tempstr="<div class=\"ownpic gallery-item\">
<img src=\"__ROOT__/Uploads/"+val+"\" alt=\"gallery "+i+"\" />
<div class=\"overlay\">
<a href=\"__ROOT__/Uploads/"+val+"\" data-rel=\"lightbox\" class=\"fa fa-arrows-alt\"></a>
</div>
</div> ";
allimgdivstr+=tempstr;
});
$('#ImagesLightBoxOne').html(allimgdivstr);是不是直接在$('#ImagesLightBoxOne').html(allimgdivstr);后面加如下代码?

$('#ImagesLightBoxOne a').addClass("fa fa-arrows-alt");
$('#ImagesLightBoxOne a').attr("data-rel","lightbox");
$('#ImagesLightBoxOne div:odd').addClass("ownpic gallery-item");
$('#ImagesLightBoxOne div:even').addClass("overlay");

我加进去后,还是没有效果。#ImagesLightBoxOne是包含以上遍历html的div容器。

var flag = false; //标识,表示页面上数据还未处理完成
$.each(data,function(i,o) {
//你的代码

flag = true;//已经完成数据处理

});
var = t;

t = setInterval(function() {//定时检测
if(flag) {//如果数据已经处理完毕
load('你的js文件'); //加载你的js文件

clearTimeout(t);//取消定时检测节省开销
}
},50);

关键是你引入js文件执行的时机,页面上的数据还没有生成,但这个js已经执行了,由于找不到对应的元素,所以失效了,因为它只执行一次,数据处理完成以后它也不会再执行了。
上面代码提供的思路是检测数据是否已经处理完成,完成后再加载你需要的js文件,保证js的执行在数据处理完成之后。追问

$.each()是循环遍历,flag=true连续执行?另外,我按照您的结构写了,还是没有实现效果。能不能在线帮助下,我的QQ:282161073

追答

请问您是如何引入js文件的?tempresponse['data']的具体数据是什么?

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-03-04
解决办法:将HTML元素动态添加到页面上后,重新调用一下轮播图开始的Js方法即可。因为页面onload的时候,轮播js代码执行过一次,那个时候这些HTML还没有在页面结构中。

加载JQUERY后原来引用的CSS文件样式失效了
原因很明显,不是jquery的问题,是你的script标签写错了,应该 <script type='text\/javascript' src='__PUBLIC__\/JS\/jquery-1.9.0.js'><\/script> 这是个双标签,你这样写后面的内容都被认为是js代码了,所以页面就会有问题

jquery的html()赋值问题
看样子是 var sname = $(this).html(); 这句的问题 你这样改下试试 var sname = $(this).html();我修改了一下,不知合不合你口味~js === function searchmodel(value) { ("#typeid").val(value);var sname = $("#typeid").val();("#search_key").text(sname);("#search_...

jquery的简介(jquery示例)
JQuery是什么Jquery是继prototype之后又一个优秀的Javascrīpt框架。它是轻量级的js库(压缩后只有21k),它兼容CSS3,还兼容各种浏览器(IE6.0+,FF1.5+,Safari2.0+,Opera9.0+)。jQuery使用户能更方便地处理HTMLdocuments、events、实现动画效果,并且方便地为网站提供AJAX交互。jQuery还有一个比较大的优...

调用webpack打包后的js中的函数报错问题
文件里面js函数较多有生成dom的有校验的有提交表单获取值的,在这我只说一下出现问题的js函数,表单所有dom结构都是动态生成的,有两个点击事件是用原生js直接写到html标签上面的,一个方法是用来关闭表单一个方法是用来提交表单。还有一个方法是给外部调用触发生成表单弹窗的方法 通过webpack打包后在页面...

下载好jquery素材,打开后有index.html文件,还有.js和.css文件,如何将素...
index.html文件是下载的效果页面,js和css文件为修饰文件,你要使用素材,需要将js和css文件,分别放置到你的网页中对应的位置,在你的也面中引入,对应修改引用地址。index.html文件里,有效果的原代码,也需要相应复制到你的页面中。然后,通过调整css,把素材你变成你需要的样子~...

jquery特点
jQuery,作为一款广泛使用的JavaScript库,具备一系列显著的特点,让网页开发更为高效和灵活。首先,它的动态特效功能强大,能够轻松实现页面元素的动态更新和交互,提升用户体验。其次,jQuery内置了AJAX(Asynchronous JavaScript and XML)支持,使得开发者可以无需刷新页面就能与服务器进行数据交换,极大地提高...

jquery 通过html方法增加对象后hover失效怎办?
1.$("#msg").html($("#msg").html()+inner);其实不是失效了,而是dom树改变了,#msg 里面的内容改变,就不是原来的 .list 了 2.$("#msg").append($(inner);新加入的 $(inner) ,不在原本的 $('.list') 集合里,因此新加入的没有被绑定事件 我这给出两种做法:① 在 #msg 内容...

我js拼接一段html,然后里面的元素无法识别,导致无法触发事件。。
DOCTYPE HTML><html><head><meta charset=UTF-8><title>YuGiOh<\/title><style type="text\/css"><\/style><script type="text\/javascript" src="jquery-1.8.0.min.js"><\/script><script type="text\/javascript">$ (function () { var body = $ ('body'); $ (":button").cl...

动态添加audio代码,引入的audio.min.js和样式无效,怎么解决
<html> <head> <script type="text\/javascript" src="jquery-1.4.2.min.js"><\/script> <link href="index.css" rel="stylesheet"> <\/head> <body> <table border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td><button value="onclick" onclick="audio()">on...

jquery自动轮播图代码只能出现一张图片第二三张就空白了 轮播正常播 ...
首先,排除掉图片路径没问题。(如果有问题,也不会网上提问了)初步判断,css静态定位错误。css样式固定在了第一张图片,第二,第三之后的css定位不到,则显示空白。即使在js中是动态定位的,但是请仔细检查你的图片<ul>的css的定位参数是否固定住了。比如,设置了{left:0;}。删除掉css的错误静态...

相似回答