Jquery preventDefault()不起作用

Jquery preventDefault()不起作用,jquery,redirect,preventdefault,Jquery,Redirect,Preventdefault,我通过一些jQuery函数实现了动画导航。这一切都很好,但有一件事让我抓狂。最后一项(第nb.5项)应该将您重定向到新页面,但不会发生。我有下面代码的前几行的条件 $(document).ready(function(){ $('li > a').on('click', function(e) { if ($(this).parent().has('p')) { e.preventDefault(); }

我通过一些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');
        }

    })

}) 
演示:

描述:将匹配的元素集减少为具有与选择器或DOM元素匹配的后代的元素集

返回:jQuery

.has()
返回一个jQuery对象

使用
.find('p')。length
.has('p')。length
代替
。has('p')

描述:将匹配的元素集减少为具有与选择器或DOM元素匹配的后代的元素集

返回:jQuery

.has()
返回一个jQuery对象

使用
.find('p')。length
.has('p')。length
代替
。has('p')

.has()
返回一个不是布尔值的jQuery对象

只需将您的if更改为:

if (!($(this).hasClass("odkaz"))) { 
    e.preventDefault();
}
代码:

.has()
返回一个不是布尔值的jQuery对象

只需将您的if更改为:

if (!($(this).hasClass("odkaz"))) { 
    e.preventDefault();
}
代码:

不返回布尔值。它返回一个jQuery对象。从文档中:

将匹配的元素集减少为具有与选择器或DOM元素匹配的后代的元素集

所以,你需要做一些类似的事情:

if($(this).parent().has('p').length)
或者更好的是,您不需要向上遍历父对象以向下遍历。只要简单地做:

if($(this).siblings('p').length)
不返回布尔值。它返回一个jQuery对象。从文档中:

将匹配的元素集减少为具有与选择器或DOM元素匹配的后代的元素集

所以,你需要做一些类似的事情:

if($(this).parent().has('p').length)
或者更好的是,您不需要向上遍历父对象以向下遍历。只要简单地做:

if($(this).siblings('p').length)

$(这个)
不是你想象的那样。执行
console.log
并查看
$(这个)
实际上是什么。我到底需要在console中写什么?我不是javascript中的noob:)
$(这个)
不是你想象的那样。执行
console.log
并查看
$(这个)
实际上是什么。我到底需要在console中写什么?我是javascript的noob:)我知道这一点,但我不打算用CSS类来做这件事。我知道这一点,但我不打算用CSS类来做这件事