Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.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 - Fatal编程技术网

Javascript jQuery函数调用两次

Javascript jQuery函数调用两次,javascript,jquery,Javascript,Jquery,我得到了这个jquery代码,一旦我调用它,函数的第一部分就启动了,但紧接着第二部分就启动了;这就像if语句不起作用一样。我的代码有问题吗 $(".pinPane").click(function() { if ($('.pinPane').hasClass('open')) { var htable = $('#content-panel-content').height(); var wtable = $('#content-panel-c

我得到了这个jquery代码,一旦我调用它,函数的第一部分就启动了,但紧接着第二部分就启动了;这就像if语句不起作用一样。我的代码有问题吗

$(".pinPane").click(function() 
{
    if ($('.pinPane').hasClass('open')) 
    {
        var htable = $('#content-panel-content').height();
        var wtable = $('#content-panel-content').width();
        var panew = wtable - 2;
        var paneh = htable * 0.7;
        var tableh = htable * 0.3;
        $('.pane')
            .height(paneh)
            .width(panew)
            .addClass('panepinned')
            .removeClass('shadow');
        $('#content-panel-content').height(tableh);
        $('.pinPane').addClass('cls').removeClass('open');
    } 
    else 
    {
        $('#content-panel-content').css('height', '100%');
        $('.pane').css('height', '100%').css('height', '-=200px');
        $('.pane').css('width', '100%').css('width', '-=40px');
    };
});
而不是:

 $('.pinPane').addClass('cls').removeClass('open');
使用:

和第一种情况一样,它将使用类pinpane从所有元素中删除类。一旦您删除了类,那么else代码将被执行,因为它现在不包含打开的类

如果它调用两次,则可能是事件传播的情况。您可以通过以下方式阻止它:

$(".pinPane").click(function(event) 
{
   event.stopPropagation();
   //rest of your code
 }
这就像if语句不起作用一样

根据需要,单击处理程序中的以下代码行可能会产生意外结果:

if ($('.pinPane').hasClass('open'))
基本上你要检查是否有。pinPane有一个打开的类;是否只检查引发单击事件的.pinPane?如果是,将其更改为:

$(".pinPane").click(function() 
{
    if ($(this).hasClass('open')) { //note this here
    } else {
    };
});

您的代码不包含任何明显的错误。你能发布一个提琴吗?是的-它在第一次单击后将不再进入if语句,因为元素不再具有open类。我猜这是因为if$'.pinPane'.addClass'cls'.removeClass'open';中的最后一行;。它删除了he类,因此转到其他类@ᾠῗᵲᄐᶌ : OP表示他的if和else块都是executing@Arun一旦我把它称为函数的第一部分启动,但紧接着第二部分启动;这就像if语句不起作用一样
$(".pinPane").click(function() 
{
    if ($(this).hasClass('open')) { //note this here
    } else {
    };
});