gpt4 book ai didi

javascript - Jquery 和 CSS 表现奇怪

转载 作者:太空宇宙 更新时间:2023-11-04 04:59:43 24 4
gpt4 key购买 nike

我有这部分代码(我会指出我感到困惑的地方,只是添加了那堵巨大的墙以防有人想真正深入研究)。

不管怎样,行为就是显示这些框,当你点击一个框时,框展开,并显示更多信息。这在 70% 的时间都有效,但是,似乎当图像未被缓存时,当您再次单击该框将其最小化时,它开始最小化,然后弹出。我想知道这是否与以下行有关:if($(this)[0].style.width == '70%'){

如果这还不够,请随时提问,如果您想尝试重现该问题:

http://newgameplus.nikuai.net/

尝试搜索一些游戏,然后点击结果。 (那只是在我说的没有意义的情况下)

谢谢。

$container.on("click", ".box", function (event) {
var description;
var user_id;
var org_img = $(this).find("img").attr("src");
if ($(this)[0].style.width == '70%') {
$(this).find("img").attr("src", org_img);
$(this).css('width', '18%');
$(this).find(".resultData").fadeOut('slow');
$container.masonry('reload');
} else {
var me = this;
value['name'] = $(me).find("p").html();
oldImage = $(this).find("img").attr("src");
$.ajax({
url: 'scripts/php/fetchResultsData.php',
data: {
action: value
},
type: 'post',
dataType: 'json',
success: function (data) {
description = data[0][2];

for (var i = 0; i < $test.length; i++) {
if ($test[i][1][2]['name'] == value['name']) {
pos = i;
break;
}
}

$(me).find("img").attr("src", data[0][4]);
$(me).css('width', '70%');

$(me).append("\
<div class='resultData'>\
<div class='resultName'>" + value['name'] + "</div>\
<div class='resultDesc'>" + description + "</div>\
<div class='reasonDataTitle'> Similar tropes between this game and the searched games </div>\
<div class='reasonData'>" + $test[pos][4] + "</div>\
<div class='wikiLink'><a href='http://wikipedia.org/wiki/" + value['name'] + "'>Wikipedia</a></div>\
<div class='resultLike'></div>\
</div>");
value['clicked'] = 0;
$.ajax({
url: 'scripts/php/userProfile.php',
data: {
action: value
},
type: 'post',
dataType: 'json',
success: function (profileData) {
if (profileData == 'alreadyAdded') {
$(me).children('.resultData').children('.resultLike').html('un-Favourite');
} else if (profileData == 'notLoggedIn') {
$(me).children('.resultData').children('.resultLike').html('Login to add');
} else {
$(me).children('.resultData').children('.resultLike').html('Favourite?');
}
}
});
$(me).on("click", '.resultLike', function (event) {
event.stopPropagation()
value['clicked'] = 1;
$.ajax({
url: 'scripts/php/userProfile.php',
data: {
action: value
},
type: 'post',
dataType: 'json',
success: function (profileData) {
if (profileData == 'removed') {
$(me).children('.resultData').children('.resultLike').html('Favourite?');
} else if (profileData == 'notLoggedIn') {
$(me).children('.resultData').children('.resultLike').html('Login to add');
} else {
$(me).children('.resultData').children('.resultLike').html('un-Favourite');
}
}
});
});
$container.masonry('reload');
}

});
}
});

最佳答案

我怀疑您的效果代码中存在竞争条件。 jQuery 效果异步运行,因此 $container.masonry('reload') 将在 fadeOut 开始时调用,而不是在结束后调用。如果 jQuery Masonry 插件影响了您正在淡出的任何 block 的显示(并且它的文档表明这很有可能),那么同时运行的两个函数的竞争条件将取消第一个淡出。

要解决此问题,请尝试在 fadeOut 的回调函数中运行 Masonry 重新加载,如下所示:

$(this).find(".resultData").fadeOut('slow', function () {
$container.masonry('reload');
});

它只是有时发生的原因是基于加载速度,这可以解释为什么它只在某些 Assets 未被缓存时发生。

关于javascript - Jquery 和 CSS 表现奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11744743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com