我有一个通过一些jQuery函数的动画导航。一切都很好,但有一件事让我发疯了。最后一项( nb项)。5)应该重定向到新的页面,但它不会发生。下面是前几行代码的条件
$(document).ready(function(){
$('li > a').on('click', function(e) {
if ($(this).parent().has('p')) {
e.preventDefault();
}
if (!$(this).hasClass('active')) {
$('li a').next('p').stop().slideUp();
$(this).next('p').stop().slideDown();
$('li a').removeClass('active');
$(this).addClass('active');
}
else if ($(this).hasClass('active')) {
$(this).next('p').stop().slideUp();
$(this).removeClass('active');
}
})
}) 演示:http://jsfiddle.net/SQTcN/2/
发布于 2014-04-08 14:02:11
has(selector)
描述:将匹配元素的集合缩减为具有与选择器或DOM元素匹配的后代的元素集。 返回: jQuery
.has()返回一个jQuery对象。
使用.find('p').length或.has('p').length代替.has('p')
$(document).ready(function(){
$('li > a').on('click', function(e) {
if ($(this).parent().find('p').length) {
e.preventDefault();
}
if (!$(this).hasClass('active')) {
$('li a').next('p').stop().slideUp();
$(this).next('p').stop().slideDown();
$('li a').removeClass('active');
$(this).addClass('active');
}
else if ($(this).hasClass('active')) {
$(this).next('p').stop().slideUp();
$(this).removeClass('active');
}
});
}); JSFIDDLE
发布于 2014-04-08 14:03:16
.has()返回一个jQuery对象,而不是布尔值。
只需将您的if改为:
if (!($(this).hasClass("odkaz"))) {
e.preventDefault();
}代码:
$(document).ready(function(){
$('li > a').on('click', function(e) {
if (!($(this).hasClass("odkaz"))) {
e.preventDefault();
}
if (!$(this).hasClass('active')) {
$('li a').next('p').stop().slideUp();
$(this).next('p').stop().slideDown();
$('li a').removeClass('active');
$(this).addClass('active');
}
else if ($(this).hasClass('active')) {
$(this).next('p').stop().slideUp();
$(this).removeClass('active');
}
})
}) 演示
发布于 2014-04-08 14:04:03
.has()不返回布尔值。它返回一个jQuery对象。从医生那里:
将匹配元素的集合减少为具有与选择器或DOM元素匹配的后代的元素集。
所以,你需要做这样的事情:
if($(this).parent().has('p').length)或者更好的是,您不需要遍历到父节点才能返回。只需做:
if($(this).siblings('p').length)https://stackoverflow.com/questions/22939287
复制相似问题