簡體   English   中英

jQuery函數調用兩次

[英]jQuery function calling twice

我已經有了這個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');

采用:

 $(this).addClass('cls').removeClass('open');

與第一種情況一樣,它將從所有帶有類pinpane元素中刪除類。 一旦您刪除了類,則其他代碼將被執行,因為現在它不包含開放類。

如果調用兩次,則可能是事件傳播的情況。 您可以通過以下方式停止它:

$(".pinPane").click(function(event) 
{
   event.stopPropagation();
   //rest of your code
 }

就像if語句不起作用

根據您的需要, click處理程序中的以下代碼行可能會產生意外的結果:

if ($('.pinPane').hasClass('open'))

基本上,您檢查.pinPane是否open了一個類; 您是否只想檢查引發click事件的.pinPane 如果是這樣,請將其更改為:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM