JavaScript/jQueryで時間を把握するためにJavaScript/jQueryを解析して特定の時間後にコンテンツを非表示にしようとしています。それをより明確にするために、私はこれらの例を与えている:HTMLクラス名で指定された時間が経過した後、jQueryでコンテンツを非表示にする
<div id="one" class="some-class some-other-class timeout-3500"> </div>
<div id="two" class="another-irrelevant-class timeout-2000"> </div>
スクリプトは、2000ミリ秒後に3500ms後div
「1」、およびdiv
「2」を非表示にします。次のように
これまでの私のコードは、次のとおりです。https://jsfiddle.net/56o57t0j/:
$('div[class*="timeout-"]').each(function()
{
var classList = $(this).attr('class').split(/\s+/);
var timeoutDelay;
for (var i = 0; i < classList.length; i++)
{
if (classList[i].includes('timeout-'))
{
timeoutDelay = parseInt(classList[i].split('-').pop(), 10);
setTimeout(function()
{
$(this).hide();
}, timeoutDelay);
}
}
});
ここで実証する(非稼働)フィドルです。
setTimeout
火災ですが、$(this).hide();
は何もしません。これは、jQueryで何も選択されていないようです(すべてのコードがeach()
のセレクタブロック内にあるので、もちろん当てはまりません)。
これに関する助力?私は朝から悩んでいます。前もって感謝します。
'setTimiout'の中の' this'は 'window'です。 'setTimiout'呼び出しをクロージャにラップします。 –
参考までに、[この "この"問題(https://developer.mozilla。org/ja-ja/docs/Web/API/WindowTimers/setTimeout#The_this_problem)。 – showdev
データ属性を使用する必要があります。クラス名の解析は必要ありません – epascarello