为什么我不能在一个jQuery函数中使用$找?
-
21-09-2019 - |
题
我使用jQuery和IScriptControls的组合,我似乎不能够使用$找到任何jQuery的功能。
采取以下,例如,我可以用$ get和$,但我不能使用$查找。
// 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");
}
);
在我的页面加载我需要调用一个方法,它需要从我的主导航选项卡控制得到所选标签(这是一个Infragistics的UltraWebTab,但我用我自己的IScriptControls测试,以确保这就是它不是一个Infragistics的问题)。
在标签索引只能通过使用$查找获得。什么是我不能用$发现,我怎样才能在$找到时尚的控制的原因是什么?
// 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控件”或“扩展程序控件”还是什么?我看过他们被称为所有不同的东西。对照具有醇” MyCompany.MyControl.prototype声明。
修改:以下作品完美,但我宁愿它是$(document).ready函数内
// Use the Ajax Load Methods
function pageLoad()
{
var ajaxControl= $find("<%=myControlHere.ClientID %>");
}
解决方案
似乎jQuery的$(文件)的Ajax控件之前。就绪火灾构造。
我得到这个工作的方法是使用以下的JavaScript方法其由Ajax框架烧制:
function pageLoad()
{
// $find() works in here
}
页面加载()火灾后的$(document)。就绪,所以会出现,当jQuery的功能火灾要说文档准备好......它实际上不是都准备好了吗?
其他提示
看来你正在使用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);
});
怎么样重新定义的document.ready
的$查找功能外var FIND_FUNCTION = $find;
$(document.ready) {
...
var result = FIND_FUNCTION("ctl00_ContentPlaceHolder1_uwt_MainNavigation");
}
此应该解决的问题作用域你似乎有
我不知道为什么你有这样的问题,但你为什么不只是使用jQuery对象呢? 像:
var mainNav = $("#ctl00_ContentPlaceHolder1_uwt_MainNavigation");
或者,如果你想要的DOM对象而不是jQuery对象,你可以写:
var mainNav = $("#ctl00_ContentPlaceHolder1_uwt_MainNavigation")[0];
此应该工作:
$(document).find("#elementid")
或者,如果你调用它在事件处理中,那么这是更好的:
$(this).find("#elementid")
我认为与查找功能的想法是要找到一个父控制的后代。因此,这似乎并没有工作,如果你不指定父。
不过,从外观上来看,你不需要使用找到你在做什么。为什么就不能这样做呢?
$("#elementid")