我有这个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');
};
});
答案 0 :(得分:0)
而不是:
$('.pinPane').addClass('cls').removeClass('open');
使用:
$(this).addClass('cls').removeClass('open');
与第一种情况一样,它将从类pinpane
的所有元素中删除类。一旦你删除了类,那么其他代码将被执行,因为它现在不包含开放类。
如果它的调用两次则可能是事件传播的情况。你可以通过以下方式阻止它:
$(".pinPane").click(function(event)
{
event.stopPropagation();
//rest of your code
}
答案 1 :(得分:0)
它就像if语句不起作用
根据您的需要,click
处理程序中的以下代码行可能会产生意外结果:
if ($('.pinPane').hasClass('open'))
基本上,您检查是否有.pinPane
个班级open
;你不想只检查引发.pinPane
事件的click
吗?如果是这样,请将其更改为:
$(".pinPane").click(function()
{
if ($(this).hasClass('open')) { //note this here
} else {
};
});