【发布时间】:2014-03-02 08:03:38
【问题描述】:
在我的父页面中,我使用 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;?>');
});
prices.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" -->
Hiddenstuff 当我直接在浏览器中运行 price.php 时正确显示,但当它是父页面的一部分时则显示不正确。因此,我假设两个脚本之间存在冲突。父页面包括
$('#tabs a')
还有
$("a.click<?php echo $i ?>")
在价格.php 中。这些有冲突吗?如果是这样,我该如何预防?我尝试在 a.click$i 周围增加一个额外的类,但这没有帮助。
解决方案 我将脚本从 ajax 加载页面移动到父页面,并将第一行重写为:
$("#prices").on('click', 'a.click', function() {
我不得不删除“$i”位,因此只要单击其中一个,脚本就会作用于代码的所有实例。我不想这样,但我将其保存为 Mk2 版本。感谢所有回复的人。
【问题讨论】:
-
尝试向
#tabs a元素添加一个类,然后将该类放入选择器中。 -
看来应该可以解决问题了。现在这两个选择器不应该冲突,因为它们选择了不同的链接。
-
您是否使用 AJAX 加载内容?那就看stackoverflow.com/questions/203198/…
-
我用这个 $('#prices').load('../prices.php?hid=');在 document.load 之后。
标签: javascript jquery html conflict