在jquery中创建全局变量

时间:2012-03-22 09:28:35

标签: jquery

我尝试使用以下代码获取列表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吗?

非常感谢。

2 个答案:

答案 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()