可能吗?
我有一个HTML文件,我使用此代码
通过外部.js文件加载元素$(document).ready(function(){
$('#redessociales2').livequery(function() {
$("#piedepagina2").load("genericbody.html #piedepagina");
});
});
#piedepagina就是这样:
<div id= "piedepagina">
<center>
<br/>
<p>
Todos los derechos reservados.
<span id="changestyle">diseño alternativo</span></br>
</p>
</center>
</div>
在同样的.js中我有这个:
if($.cookie("css")) {
if($.cookie("css")==1){
$("#linkestilo").attr("href", "../css/post.css");
}
else{
$("#linkestilo").attr("href", "../css/post2.css");
}
}
$(document).ready(function(){
$("#changestyle").click(function(e){
var estilo1="../css/post.css"
var estilo2="../css/post2.css"
if($("#linkestilo").attr("href")==estilo1){
$("#linkestilo").attr("href", estilo2);
$.cookie("css", "2", {expires: 365, path: '/'});
}
else{
$("#linkestilo").attr("href", estilo1);
$.cookie("css", "1", {expires: 365, path: '/'});
}
$('html, body').animate({
scrollTop: '0px'
},
1500);
return false;
});
});
这段代码改变了网络的风格,如果我将HTML代码直接放在HTML文件中,但是当我将HTML代码移动到另一个HTML文件时(我需要这样做),它会很有效。
我认为这可能是因为我正在通过ID调用元素,而这个ID在原始HTML文件中并不是phisically。 我该如何解决?
非常感谢!
答案 0 :(得分:0)
因为您从外部文件加载html,$("#changestyle")
在$(document).ready()
触发时很可能未加载到click()
,因此未附加$("#changestyle").click()
。
您使用的是哪个版本的jQuery?我很久没有使用过LiveQuery,但是从v1.7 +开始,你应该使用on() event handler。将现有的$("#piedepagina2").on("click", "#changestyle", function(e){
// run your code here
}
处理程序更改为:
{{1}}
答案 1 :(得分:0)
非常感谢你的帮助! 我终于找到了正确的代码,我与您分享:
$(document).ready(function () {
$("#piedepagina2")
.load("genericbody.html #piedepagina")
.delegate("#changestyle", "click", function (e){
var estilo1="../css/post.css"
var estilo2="../css/post2.css"
if($("#linkestilo").attr("href")==estilo1){
$("#linkestilo").attr("href", estilo2);
$.cookie("css", "2", {expires: 365, path: '/'});
}
else{
$("#linkestilo").attr("href", estilo1);
$.cookie("css", "1", {expires: 365, path: '/'});
}
$('html, body').animate({
scrollTop: '0px'
},
1500);
return false;
});
});
我希望帮助有同样问题的人!
再见!再次!!