【问题标题】:$find() returns null in IE 9$find() 在 IE 9 中返回 null
【发布时间】:2013-02-11 10:12:52
【问题描述】:

有时Sys.Application.add_load 中的$find() 方法会返回null,有人可以帮我解决这个问题吗?

请注意

  • 这是 IE 9 特定问题

  • 偶尔发生

  • 方法$('#id')返回正确的jQuery对象

  • 我要查找的元素是 SPAN 内的 RadDockZone

  • 同样$find()函数在页面加载后返回AJAX组件

代码

Sys.Application.add_load(gridRefresh_ctl00_contentPlaceHolder_ctl02_2_C_ctl00_GridBooking);

function gridRefresh_ctl00_contentPlaceHolder_ctl02_2_C_ctl00_GridBooking() {
    var gridctl00_contentPlaceHolder_ctl02_2_C_ctl00_GridBooking = $find('ctl00_contentPlaceHolder_ctl02_2_C_ctl00_GridBooking');
    Sys.Application.remove_load(gridRefresh_ctl00_contentPlaceHolder_ctl02_2_C_ctl00_GridBooking);
    if(gridctl00_contentPlaceHolder_ctl02_2_C_ctl00_GridBooking._customData['RefreshOnPageLoad']) 
    gridctl00_contentPlaceHolder_ctl02_2_C_ctl00_GridBooking.refresh();
}

【问题讨论】:

  • 你尝试了什么?请写下你的代码。
  • 这个问题需要一个例子,否则我们怎么知道发生了什么以及为什么?
  • $find() 返回一个 ASP.NET AJAX 组件,而不是一个元素。如果你想要一个元素,请改用$get()
  • 是的,我需要相应的AJAX组件。
  • @user,我们需要更多信息才能确定发生了什么。问题是仅在部分回发期间发生,还是全部回发受到影响?您是否在网格组件中有特定的初始化可能会延迟其他组件的创建,直到其 initialize() 方法返回之后?

标签: asp.net asp.net-ajax internet-explorer-9


【解决方案1】:

我不确定您是否正确使用了语法。以此为例:

http://jsfiddle.net/turiyag/7wntu/

$("#content").find("#someid").css({border:"5px solid blue"});

【讨论】:

  • 这会返回 jQuery 对象,但我需要 AJAX 组件。
【解决方案2】:

这行不通:

var xyz = $find('ctl00_contentPlaceHolder_ctl02_2_C_ctl00_GridBooking');

该方法获取当前匹配元素集合中每个元素的后代,由选择器、jQuery 对象或元素过滤:

var xyz = $('parentSelector').find('descendantsSelector');

如果它是您用作“descendantsSelector”的 ID,则根本不需要 find,ID 必须是唯一的,所以它应该是:

var xyz = $('#ctl00_contentPlaceHolder_ctl02_2_C_ctl00_GridBooking');

【讨论】:

  • 您将 $find() (ASP.NET AJAX) 与 $.fn.find() (jQuery) 混淆了。这是完全不同的两种野兽。
  • @FrédéricHamidi 啊,我明白了,误解了这个问题。
猜你喜欢
  • 2011-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-29
  • 2012-03-06
  • 1970-01-01
相关资源
最近更新 更多