まず、申し訳ありませんが、質問を別の方法で表現する方法がわかりません...
複数の注文項目を持つ顧客注文のフォームを想像してください。
フォームをより簡単かつ迅速に処理するために、注文項目をコピーする機能が提供されています。これはクローン機能で発生し、機能します。その前に、複製されたオブジェクトのいくつかの onclick プロパティを変更する必要があります。例えば:
// tr is an tr element of a table
$(":input[type=checkbox]", tr).each(function() {
$(this).removeAttr("onclick").click(function() {
func($(this));
});
});
関数:
function func(chkbx)
{
if (chkbx.checked) {
// do stuff...
} else {
// do other stuff...
}
}
ここでの問題: 元の tr オブジェクトによって関数が呼び出されると、すべて正常に動作しますが、クローン/コピーされた tr によって関数が呼び出されると、常に else ブランチに入ります。
確かに、渡されたオブジェクトを確認しました。元の tr オブジェクトから渡されると、期待どおり HTMLInputElement になりますが、複製されたものからは「通常の」オブジェクトになります。奇妙なことに、「チェック済み」プロパティがあるかどうかを両方をチェックすると、どちらにもありません...
クローンされたオブジェクトに対しても関数が適切に機能するようにしたいだけです..
誰かが助けてくれることを願っています。誰もが私を理解してくれます:Dありがとう
更新:問題はこれで解決されました:
$(chkbx).prop("checked")
それ以外の
chkbx.checked
しかし、なぜattr()関数が未定義になったのだろうか?