Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery代码行为错误_Javascript_Jquery_Html_Jquery Plugins - Fatal编程技术网

Javascript jQuery代码行为错误

Javascript jQuery代码行为错误,javascript,jquery,html,jquery-plugins,Javascript,Jquery,Html,Jquery Plugins,jQuery没有按它应该的方式工作,并且完全忽略了逻辑 如果单击某个链接,它将显示给定的说明,并淡出其他菜单。 如果我再次单击同一链接,它将隐藏该描述,并将其他链接淡入 但它只是隐藏文本,不会将其淡入。 当从控制台单独运行代码时,当您单击段落旁边的空白时,它工作得很好 jQuery: $('a[class]').click(function(){ var clas = $(this).attr('class'); $('#'+clas.substring(0,2

jQuery没有按它应该的方式工作,并且完全忽略了逻辑

如果单击某个链接,它将显示给定的说明,并淡出其他菜单。
如果我再次单击同一链接,它将隐藏该描述,并将其他链接淡入

但它只是隐藏文本,不会将其淡入。
当从控制台单独运行代码时,当您单击段落旁边的空白时,它工作得很好

jQuery:

    $('a[class]').click(function(){
    var clas = $(this).attr('class');
        $('#'+clas.substring(0,2)).fadeTo('fast',1).removeClass('faded');
        $('p:not(#'+clas.substring(0,2)+')').fadeTo('fast',0.3);
        $('.ans:visible').toggle('slow');
        $('#'+clas.substring(0,2)+'a'+':hidden').fadeIn('slow');
        $('p:not(#'+clas.substring(0,2)+')').addClass('faded');
        return false;
    });
    $('p:not(p.faded)').click(function(){
        $('.ans:visible').toggle('slow');
        $('p[class="faded"]').fadeTo('fast',1).removeClass('faded');
    });
HTML:

1。címre a karakter nevével。
OC katés fillyket NEM adok hozzá。

2。奥尔达拉,阿霍尔·基瓦拉施塔托德·凯德文。
Haználhatod továbbáa“Véletlenszerűkarakter”链接是。

3。weboldal pónisított változataként indult,
德阿佐塔·马尔·纳吉·梅尔特·卡本·托瓦布·费耶尔·德奥特·阿兹·奥尔达尔(de azóta már nagy mértékben továbbfejlődött az oldal)。


我钦佩你的自信:你的代码不起作用,所以你认为问题出在jQuery上

在代码中,此语句:

$('p:not(p.faded)').click(function(){
…将单击处理程序绑定到当时没有“褪色”类的任何元素。这将是所有元素,因为最初没有任何元素褪色。如果希望它仅应用于以后未添加该类的元素,则需要使用委派处理程序,该处理程序通过
.on()
(或
.delegate()
指定,如果使用的jQuery早于1.7,或
.live()
指定,如果使用的jQuery非常旧):

理想情况下,您不会将处理程序绑定到
文档
,您应该使用相关段落中最接近的应答器,但由于您没有显示那么多标记,我将把这部分留给您

同样,您
返回false”,这将阻止单击事件向上传播到段落

然而,我认为你让整个事情变得比你需要的更复杂了。以下代码完成了该任务:

var $questions = $('p'); // add class selectors here

$questions.click(function(){
   var $this = $(this),
       isOpen = $this.hasClass('open');

   $this.fadeTo('fast',1).toggleClass('open',!isOpen)
        .find('span.ans').toggle('slow');
   $questions.not(this).fadeTo('fast', isOpen ? 1 : 0.2)
                       .removeClass('open')
                       .find('span.ans').hide('slow');
});
​ 也就是说,当点击任何段落时,找出它是否已经打开了答案。然后确保单击的选项可见,并切换其答案。然后把它的所有同级段落适当地淡入淡出并隐藏它们的答案

在我的注释“AddClassSelectors here”中,最好添加一个类来识别文档中哪些段落是问题


演示:

我永远不会使用jQuery将样式应用到代码中,而是简单地添加和删除类

事情会变得一团糟,有时候,我们可以简化而不是复杂化

下面是一个简单的例子:

相同,但没有

  • 添加颜色以便我们知道“引擎盖下”发生了什么,这将让您自己判断。

    不阅读代码,我诚实地认为,您的行为是错误的。如果您看到自己在一个over上使用了一组选择器,这意味着现在正是考虑将它们缓存在变量中并引用该变量的好时机。它将使您的代码更干净、更可读,因此您将有更好的机会让人们对您的代码感兴趣。@pimvdb将破坏代码,因为它将引用(示例)
    $('#q2a:hidden')。fadeIn('slow')
    @DJDavid98:是的,对不起,我以为它指的是
    元素。也许可以尝试删除
    return false
    ,因为它可以防止传播到第二个处理程序。@pimvdb关于这一点有一个讨论,所以我需要它。+1到“我欣赏你的自信:你的代码不工作,所以你认为问题出在jQuery上。”我有一个问题。在第一个问题的第一个跨度内还有另一个跨度。这会在显示文本时隐藏它。对不起,是的,我应该在两个
    .find()
    语句中的选择器中使用
    “ans”
    类。答案和演示更新。如果我使用列表元素,你的答案会很好。实际上我想使用类,但是我会丢失jQuery的淡入淡出动画。。。我永远不会使用一个用于显示文本而不是创建块的
    图形。。。只需在每个答案中使用
    ,您将得到相同的答案
    $(document).on('click', 'p:not(p.faded)'), function() {
    
    var $questions = $('p'); // add class selectors here
    
    $questions.click(function(){
       var $this = $(this),
           isOpen = $this.hasClass('open');
    
       $this.fadeTo('fast',1).toggleClass('open',!isOpen)
            .find('span.ans').toggle('slow');
       $questions.not(this).fadeTo('fast', isOpen ? 1 : 0.2)
                           .removeClass('open')
                           .find('span.ans').hide('slow');
    });