【发布时间】:2011-04-12 19:12:02
【问题描述】:
非常感谢您的帮助,因为我一遍又一遍地查看并完全迷失在可能出现的问题中。
我有一个对 Web 服务的 Ajax 调用,我正在通过这个调用构建一些 HTML 结构。到目前为止一切都很好,数据被提取出来,我可以直观地看到结构。
但是,随着我的代码继续运行,并且我稍后尝试读取这些元素以进行更多操作,JavaScript 根本看不到它们,并且元素计数我变为零。
项目中的一些相关代码。 这个函数首先运行并基本上构建所需的 HTML 片段
$.ajax({
type: "POST",
url: "HistoryEventsWebService.asmx/getEventsData",
data: event_types,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) { //on success
var results = result.d;
$('#insidediv_container').empty();
for (var i = 0; i < results.length; i++) {
var insidediv = '';
insidediv += '<div class="insidediv">';
insidediv += '<span class="month">' + results[i].month + '</span><span class="day">' + results[i].day + '</span><span class="year">' + results[i].year + '</span>';
insidediv += '<div class="header"><span>Jan 08, 2010 - event one</span> </div>';
insidediv += '<div class="contentdiv">' + results[i].event_desc + '</div>';
insidediv += '</div>';
$('#insidediv_container').append(insidediv);
}
}
});
return false;
在上层函数完成后,我的代码继续到下一个函数,这就是我的问题所在!
var currentbox = 0;
var current_box_old = 0;
var box_size = ($('.insidediv').width() + 1).toString();
var box_count = $('.container2 > div > div').length - 1;
//console.log(box_count);
var min_range = 0;
setScale(); //making slider visual elements
//slider code
$("#slider").slider({
min: min_range,
max: box_count,
value: 0,
animate: true,
//step: 1,
slide: function (event, ui) {
current_box_old = currentbox;
currentbox = ui.value;
if (currentbox > current_box_old)
$('#insidediv_container').animate({ "margin-left": "-=" + box_size + "px" }, "normal");
else
$('#insidediv_container').animate({ "margin-left": "+=" + box_size + "px" }, "normal");
}
});
提前谢谢你。
【问题讨论】:
-
我希望 results.length 总是超短的。在 for 循环中将项目附加到 DOM 非常昂贵。追加一个字符串,然后在循环结束时追加一次大字符串,以获得更多超级快乐的乐趣(jQuery 性能)。
-
感谢您的建议,我什至不知道这一点。一定会调查的。
标签: javascript asp.net web-services jquery