单击对应时,我的脚本 应展开/折叠UL元素。它在FF中工作正常,可以查看over here。
我首先加载jQuery lib然后我自己的examples.js包含:
function initExamples() {
$('#examples ul').hide();
$('#examples ul:first').show();
$('#examples li a:first').addClass('exampleon');
$('#examples li a').click(function(event) {
event.preventDefault();
var checkElement = $(this).next();
if((checkElement.is('ul')) && (checkElement.is(':visible'))) {
return false;
}
if((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
$('#examples a.exampleon').removeClass('exampleon');
$('#examples ul:visible').slideUp('normal');
$(this).addClass('exampleon');
checkElement.slideDown('normal');
return false;
}
}
);
}
$(document).ready(function() {initExamples();});
另一方面,我的HTML显示如下:
<ul id="examples">
<li>
<a href="#">TITLE TEXT 1</a>
<ul>
<li><a href="#">MY CONTENT 1</a></li>
</ul>
</li>
<li>
<a href="#">TITLE TEXT 2</a>
<ul>
<li><a href="#">MY CONTENT 2</a></li>
</ul>
</li>
<li>
<a href="#">TITLE TEXT 3</a>
<ul>
<li><a href="#">MY CONTENT 3</a></li>
</ul>
</li>
</ul>
click /)似乎没有在IE / Safari / Chrome中触发,但是初始隐藏/显示确实如此,它还会触发默认行为并链接到'mypage.html#'我尝试过preventDefault( );,但也许我做错了。
任何帮助都是非常感谢!
答案 0 :(得分:0)
对不起,我们需要更多信息。我刚试过这段代码(jQuery版本1.4.2):
<html>
<head>
<title>test</title>
<script type="text/javascript" language="javascript" src="jquery.js"></script>
<script type="text/javascript" language="javascript">
function initExamples() {
$('#examples ul').hide();
$('#examples ul:first').show();
$('#examples li a:first').addClass('exampleon');
$('#examples li a').click(function(event) {
event.preventDefault();
var checkElement = $(this).next();
if((checkElement.is('ul')) && (checkElement.is(':visible'))) {
return false;
}
if((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
$('#examples a.exampleon').removeClass('exampleon');
$('#examples ul:visible').slideUp('normal');
$(this).addClass('exampleon');
checkElement.slideDown('normal');
return false;
}
}
);
}
$(document).ready(function() {initExamples();});
</script>
</head>
<body>
<ul id="examples">
<li>
<a href="#">TITLE TEXT 1</a>
<ul>
<li><a href="#">MY CONTENT 1</a></li>
</ul>
</li>
<li>
<a href="#">TITLE TEXT 2</a>
<ul>
<li><a href="#">MY CONTENT 2</a></li>
</ul>
</li>
<li>
<a href="#">TITLE TEXT 3</a>
<ul>
<li><a href="#">MY CONTENT 3</a></li>
</ul>
</li>
</ul>
</body>
</html>
它似乎在Safari下正常工作。也许这是你布局的其他东西?
答案 1 :(得分:0)
Karasutengu非常感谢你花时间为我测试,我真的很感激。我已经设法使用jquery的切换切换':visible'作为替代方法。我认为这可能是问题的根源。
如果有人对此感兴趣,那么最终的跨浏览器兼容代码:
$(document).ready(function() {
$('#examples ul').hide();
$('#examples ul:first').show();
$('#examples li:first').addClass('exampleon');
$('#examples li a').click(function() {
$(this).css('outline','none');
if($(this).parent().hasClass('exampleon')) {
$(this).siblings('ul').slideUp('slow',function() {
$(this).parent().removeClass('exampleon');
});
} else {
$('#examples li.exampleon ul').slideUp('slow',function() {
$(this).parent().removeClass('exampleon');
});
$(this).siblings('ul').slideToggle('slow',function() {
$(this).parent().toggleClass('exampleon');
});
}
return false;
});
});