我正在使用jQuery和IScriptControls的组合,我似乎无法在任何jQuery函数中使用$ find。
采取以下措施,例如,我可以使用$ get和$,但我不能使用$ find。
// Configure the toolbar groups
$(document).ready(function()
{
// Returns the control
var works1 = $get("ctl00_ContentPlaceHolder1_uwt_MainNavigation");
var works2 = $("#ctl00_ContentPlaceHolder1_uwt_MainNavigation");
// Returns null
var broken = $find("ctl00_ContentPlaceHolder1_uwt_MainNavigation");
}
);
当我的页面加载时,我需要调用一个方法,该方法需要从我的MainNavigation Tab控件获取选定的选项卡(这是一个Infragistics UltraWebTab,但我已经使用我自己的IScriptControls测试,以确保它不是Infragistics问题。)< / p>
只能使用$ find获取选项卡索引。我不能使用$ find的原因是什么?如何以$ find方式获得控件?
// Configure the toolbar groups
$(document).ready(function()
{
// Get the UltraWebTab Control
var tabControl = $find("<%=uwt_MainNavigation.ClientID %>");
var index = tabControl.get_selectedTab();
ToolBarShowGroup(index);
}
);
以上是我正在尝试做的事情,其中ToolBarShowGroup调用jQuery函数来显示和隐藏工具栏。
另外,虽然我听到了,如果有人可以纠正我的术语,那么它涉及到IScript控件..它们是'Ajax Controls'还是'Extender Controls'还是什么?我看到他们被称为所有不同的东西。控件具有'MyCompany.MyControl.prototype声明。
编辑:以下工作完美无缺,但我宁愿它在$(document).ready函数内部。
// Use the Ajax Load Methods
function pageLoad()
{
var ajaxControl= $find("<%=myControlHere.ClientID %>");
}
答案 0 :(得分:2)
似乎jQuery的$(document).ready在Ajax控件构造之前就已经触发了。
我的工作方式是使用Ajax框架触发的以下JavaScript方法:
function pageLoad()
{
// $find() works in here
}
pageLoad()在$(document).ready之后触发,所以看起来当jQuery的函数触发说文档准备好了......它实际上还没准备好了吗?
答案 1 :(得分:1)
您似乎正在使用jQuery与其他库重新定义$
函数。您可以使用noConflict功能强制您始终使用jQuery
代替$
。
jQuery.noConflict();
// Configure the toolbar groups
jQuery(document).ready(function() {
// Returns the control
var works1 = $get("ctl00_ContentPlaceHolder1_uwt_MainNavigation");
var works2 = jQuery("#ctl00_ContentPlaceHolder1_uwt_MainNavigation");
// Returns null
var broken = $find("ctl00_ContentPlaceHolder1_uwt_MainNavigation");
});
jQuery(document).ready(function() {
// Get the UltraWebTab Control
var tabControl = $find("<%=uwt_MainNavigation.ClientID %>");
var index = tabControl.get_selectedTab();
ToolBarShowGroup(index);
});
答案 2 :(得分:1)
如何在document.ready
之外重新定义$ find函数var FIND_FUNCTION = $find;
$(document.ready) {
...
var result = FIND_FUNCTION("ctl00_ContentPlaceHolder1_uwt_MainNavigation");
}
这应该可以解决您似乎遇到的范围问题。
答案 3 :(得分:0)
我不确定你为什么会遇到这个问题,但为什么不直接使用jQuery对象呢? 像:
var mainNav = $("#ctl00_ContentPlaceHolder1_uwt_MainNavigation");
或者如果你想要DOM对象而不是jQuery对象,你可以写成:
var mainNav = $("#ctl00_ContentPlaceHolder1_uwt_MainNavigation")[0];
答案 4 :(得分:0)
这应该有效:
$(document).find("#elementid")
或者如果你在事件处理程序中调用它,那么这更好:
$(this).find("#elementid")
我认为使用find函数的想法是找到父控件的后代。因此,如果您没有指定父级,它似乎不起作用。
然而,从它的外观来看,你不需要使用find来做你正在做的事情。为什么不简单地这样做?
$("#elementid")