我尝试使用以下代码获取列表ID的值:
var ticket = '';
$(".selectedcategory").mouseover(function () {
ticket = this.id;
});
$("#subCat").remove();
var urlCat = '<%: Url.Content("~/") %>' + "Gallery/TestGallery";
var list = $(".level1").append('<ul ></ul>').find('ul');
$.getJSON(urlCat, { Depid: ticket }, function (dataCat) {
$.each(dataCat, function (indexCat, dataOptionCat) {
list.append('<li><a href="teste">' + dataOptionCat.Name + '</a></li>');
});
});
我想在“$.getJSON(urlCat, { Depid: ticket }, function (dataCat) {
”中使用“.selectedcategory”的id是“ticket”,但在mouseover()
函数外使用时,它是未定义的。
有人可以告诉我如何在mouseover()
函数之外获取this.id吗?
非常感谢。
答案 0 :(得分:1)
问题是,在调用getJSON时,还没有调用鼠标悬停功能,因此票证仍未定义。
目前尚不清楚您要实现的目标,但由于getJSON的结果似乎取决于故障单,因此您也可以在鼠标悬停功能中调用getJSON。
答案 1 :(得分:1)
通过以下代码:
$(".selectedcategory").mouseover(function () {
ticket = this.id;
});
您没有立即执行ticket = this.id
分配,只为mouseover
添加事件处理程序到该类别。稍后在代码中你将JSON传递给请求参数中的空字符串。
只使用基于事件的编程,仅在特定事件发生时调用函数,并可能将回调传递给它们。你可以通过搜索网络来学习它 - 其中一个资源在这里:http://mostlygeek.com/tech/event-driven-programming-with-jquery/(它基于旧的jQuery,所以替换.bind()
,.live()
和{{1}正确使用最新的jQuery中的.delegate()
。