在我的父页面中,我使用jquery来操作选项卡区域,并将内容(prices.php)加载到其中一个选项卡中。这是该页面上的脚本:
$(document).ready(function() {
$("#tabcontent > div").hide(); // Initially hide all content
$("#tabs li:first").attr("id","current"); // Activate first tab
$("#tabcontent div:first").fadeIn(); // Show first tab content
$('#tabs a').click(function(e) {
e.preventDefault();
if ($(this).closest("li").attr("id") == "current"){ //detection for current tab
return
}
else{
$("#tabcontent > div").hide(); //Hide all content
$("#tabs li").attr("id",""); //Reset id's
$(this).parent().attr("id","current"); // Activate this
$('#' + $(this).attr('name')).fadeIn(); // Show content for current tab
}
});
$('#prices').load('../prices_test.php?hid=<?php echo $hid;?>');
});
price.php还使用Jquery在单击按钮时显示隐藏区域。由于按钮位于可能重复多次的do循环内,我使用$ i并在循环中包含脚本:
<td height="30px" colspan="3" align="right" style="padding-right:20px">
<a href="javascript:void()" class="click<?php echo $i ?> buttonSearchList"> Enquire or Book</a>
<script>
$("a.click<?php echo $i ?>").click(function() {
$(".hiddenstuff<?php echo $i ?>").slideDown(1000),
$("a.click<?php echo $i ?>").fadeOut(500);
});
</script>
</td>
</tr>
</table>
<div class="hiddenstuff<?php echo $i ?>" style="display:none">
<-- Content of "hiddenstuff" -->
当我直接在浏览器中运行prices.php时, Hiddenstuff
会正确显示,但当它是父页面的一部分时则不会。因此我假设两个脚本之间存在冲突。父页面包括
$('#tabs a')
并且有
$("a.click<?php echo $i ?>")
in prices.php。这些相互矛盾吗?如果是这样,我该如何预防呢?我试过在a.click$i
附近增加一个课程,但这没有帮助。
解 我将脚本从ajax加载页面移动到父页面,并将第一行重写为:
$("#prices").on('click', 'a.click', function() {
我必须删除“$ i”位,因此只要单击其中一个,脚本就会对代码的所有实例起作用。我不想这样离开,但我正在为Mk2版本保存。感谢所有回复的人。
答案 0 :(得分:0)
如果将2个或更多jQuery导入到您的页面上,则每个实例都可以覆盖以前加载的命名空间。根据内容的加载方式以及加载其他版本的时间,较新的文件可能会覆盖事件绑定的$ namespace。查看noConflict()功能。这个人可以做一些事情,他可以完全从全局上下文中删除jQuery实例并将其推送到本地var。
var jQ = jQuery.noConflict(true);
jQ('.someClass').click(function(){
// do stuff
});
或者它可以简单地删除对$
快捷方式的依赖。这意味着当我们想要引用该版本的jQuery时,我们需要使用jQuery
而不是$
。
$.noConflict();
jQuery('.someSelector').click(function(){
// more stuff doing
});