[英]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.