jQueryスライディングアニメーションを適用するページの要素のリストがあります。しかし、アニメーションが順番に連鎖するようにしたい、つまり、前のアニメーションが終了したときにのみ要素がアニメーションを開始するようにしたい。Javascriptを使用するeval():コードセキュリティ/脆弱性について疑問に思う
リストの長さは可変なので、私は動的な解決策を見つける必要があります。 私はこの思い付いた:上記のコードでは
function closeYear(year, speed, complete) {
$(year).next().slideUp(speed, complete);
}
function closeYears(years, speed, complete) {
if ($(years).length == 1) {
closeYear($(years).first(), speed, complete);
} else if ($(years).length > 1) {
var codeStr = ""
$(years).slice(0, $(years).length - 1).each(function(k) {
codeStr = codeStr + "closeYear($(years)[" + k + "],'" + speed + "',";
});
codeStr = codeStr + "closeYear($(years).last(),'" + speed + "',complete)" + Array($(years).length).join(")") + ";";
eval(codeStr);
}
}
、私はときにすべて実行されるアニメーションの速さだけでなく、complete
関数を指定することができることを含め、私が欲しいものを達成することができますよ
closeYears($(".year"), "slow", function() {console.log("done!");})
私の質問はeval()
機能の使用に関するされていますので、同様に、処理されました。私はセキュリティ上の問題に関してはあまり精通していないので、自分のコード、書かれた方法、または自分の望むことをやるためのより良い/より安全な方法があれば心配していますか? ...
コメントがありますか?
その安全な、しかし非常に非常に遅いです。 –
[JavaScriptのeval()が悪い場合](https://stackoverflow.com/questions/197769/when-is-javascripts-eval-not-evil) – Nope
ほとんどの場合、使用する必要がありますeval()あなたは何か間違っている。あなたのコードを見ると、実際にはそれを使う必要はありません。 – epascarello