次のスクリプトがあります。ページが初めてロードされたときにFindPromo()
と呼びます。特に、HTML Table
の子が待機するまで待機します。JQuery関数はページのロード時のみ動作し、AJAxのデータロード後は実行できません。
その後td
は、ユーザーに現在あることを確認するために、クラス.promotion
で、同じ時のチェックですべてtd's
を見つけることが、我々はそれに追加promoSelect
を割り当てている場合checkvisible
を呼び出すことにより、閲覧、我々はまた、ときにこれを呼び出しますユーザーがスクロールしてテーブルをスクロールし、クラスのtd
が表示されたら、再びpromoSelect
を割り当てます。
私たちは、その後、table
がクラスpromoSelect
を持っており、取得td's
はそれから値だ見つけループGetPromo
これを呼び出す - これまでのところ、これは完全に正常に動作しています。
問題:
表の上部に、4 buttons
があるときuser
、4 buttons
は、user
が順番に再びhtml
表に移入AJAX
を介して行われているさまざまなデータをロードすることができますbuttons
クリックイベントの1つを押してFindPromo()
に再度電話しましたが、td's
をチェックしても、データが正常に読み込まれた後にクラスのクラスがに追加されていないようです私はいくつかのhaを見ることができますクラス.promotion
。
は、今私はFindPromo()
/GetPromo()
内部console.logs
を配置した、彼らは、コンソールに書き込むように見える、まだスクリプトがuser
が4つのいずれかのボタンを押した後に実行に失敗します。
スクリプト:
// Called on page load and when the user clicks on 1 of the four buttons
function FindPromo() {
var checkExist = setInterval(function() {
var length = $('table.tst-orderProductsTable').find('tbody').children().length;
if (length > 0) {
clearInterval(checkExist);
$('tbody').scroll(function() {
$('.promotion').filter(checkVisible).addClass('promoSelect'); // Find all promotion td's and assign promoSelect class to them
GetPromo();
}).scroll();
}
}, 500);
}
function checkVisible() {
var elm = this;
var eval = eval || "visible";
var vpH = $(window).height(), // Viewport Height
st = $(window).scrollTop(), // Scroll Top
y = $(elm).offset().top,
elementHeight = $(elm).height();
if (eval == "visible") return ((y < (vpH + st)) && (y > (st - elementHeight)));
}
// Now loop the td's and find all td's that have the class promoSelect.
// Then retrieve information from that td
function GetPromo() {
var product_description = '';
var product_position = '';
$("td").each(function (i, row) {
if ($(this).hasClass('promoSelect')) {
console.log("here");
}
});
}
// clicking 1 of the four buttons above table.
$('.product-tab-label').click(function() {
FindPromo();
});
FindPromo();
「実行に失敗する」という正確な意味はありますか?コンソールにエラーがありますか?デバッグすると、関数が呼び出されたときに何が起こりますか?どのように具体的に失敗するのですか? – David
@Davidユーザーが4つのボタンのうちの1つを押した後、クラス昇格のすべてのtdを見つけることができません。しかし、ページの読み込みでは、完全に正常に動作します。 –
特に.scroll()のコールバックでは、セレクタ '$( '。promotion')'は一致する要素を返しません。それは、その時点でそのような要素がそのページに存在しないことを強く示唆する。それらはDOMから何らかの形で動的に変更またはアンロード/リロードされていますか? – David