我有一個AJAX功能,我正在建設一個電話scroll
或click/touchtstart
,以便將一些內容附加到我的HTML。在桌面環境中,一切都非常適合我,無論是點擊還是滾動事件。但是,他們都沒有在我的Android 2.3.7 HTC EVO或Android 4.1.1上的Nexus 7上工作。Android:觸發器AJAX功能不起作用
這裏是我的點擊JavaScript事件處理程序:
$('.loadMore').each(function() {
//Set URL and start on the first page
var self = this;
var path2root = ".";
var loc = window.location.origin;
var url = loc + "/process.php";
var subcategoryId = $(this).parent().attr('data-subcategoryId');
var page = 1;
// Build the updated URL
$(self).bind('touchstart', function(e) {
e.preventDefault();
page++;
// AJAX function for processing JSON
$.ajax({
url: url + "?subcategoryId=" + subcategoryId + "&page=" + page,
type: "GET",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function (data) {
var i = 0;
for(i = 0 ; i < data.length; i++) {
var articleId = data[i].articleResult.articleId;
var title = data[i].articleResult.title;
var subhead = data[i].articleResult.subhead;
var image = data[i].articleResult.image;
var response = "<td><div class='articleResult'><a href='" + path2root + "/article/article.php?articleId=" + articleId + "'><img src='" + image + "' width='120'/></a><br><h3><a href='" + path2root + "/article/article.php?articleId=" + articleId + "'>" + title.substring(0,25) + "</a></h3></div></td>";
$("table tr td:nth-last-child(2)").after(response);
};
}
});
});
});
我的滾動功能非常相似,只是我綁定的事件不同的元素,並滾動:
// Collecting scroll info
$('.overthrow').each(function() {
// SAME VARIABLES
$(this).scroll(function() {
if ($(self).scrollLeft() >= parseInt($(document).width() - 50)) {
if (finished == 1) {
page++;
finished = 0;
// SAME AJAX FUNCTION
};
};
});
});
記住這是一個移動優化的網頁,而不是原生的PhoneGap應用程序,我使用的是常規jQuery 1.8.0,而不是jQuery Mobile或PhoneGap。
我在Google Code上發現了THIS問題,關於Android 2.3沒有非常有效地接收touchstart事件,這導致我開始構建on scroll功能。
您是否打算在滾動期間或在單擊/觸摸$('。loadMore')元素時自動填充內容? – dSquared
那麼,我最初是通過觸摸/點擊來構建它,但是當我的Android設備無法工作時,我開始構建一個滾動功能。我將這兩個腳本都包含在內,因爲它們都可以在Desktop Chrome/Ffox等上完美運行,但不會在我的任何Android瀏覽器上運行。 – robabby
看看我的答案;它應該解決您的問題...如果您打算只綁定到點擊/觸摸事件,請記住刪除滾動事件。 – dSquared