【问题标题】:call js code in User control from page using jquery/javascript使用 jquery/javascript 从页面调用用户控件中的 js 代码
【发布时间】:2011-12-30 06:14:45
【问题描述】:

我在整个项目中使用的通用用户控件中有一个 js 方法。这个UserControl 在我的页面上的多个地方使用。 js方法写成这样:

function <%= this.ClientID%>DoSomething()
{
//do something
}

有没有办法可以使用 jquery 从父页面调用此方法?

任何想法都会有所帮助。

【问题讨论】:

  • 使用这种函数名不是最佳实践
  • 是的,我知道,但不是我写的,现在正在使用。 :)
  • 它现在可以使用,但您可以根据需要进行重构;)

标签: javascript jquery asp.net controls


【解决方案1】:

您必须知道&lt;%= this.ClientID%&gt;,以便将其保存在某个地方。

window.clientID = "<%= this.ClientID%>";

要调用该函数,您可以尝试类似

window[window.clientID + "DoSomething"]()

因为函数保存在文档中,您可以像访问普通数组一样访问它们。通常您可以将它们称为window.doSomething()doSomething(),结果相同。

工作版

window.myFunction = function()
{
     alert("YEAH");  
}

window.clientID = "my";
alert(window[window.clientID + 'Function']);

现场演示:http://jsfiddle.net/EbdwK/

【讨论】:

  • 全局对象是window,而不是document。所以应该是window[document.clientID + 'DoSomething']
  • 感谢回复,我搞错了。
  • 我的页面中有“test”类的 div 内的用户控件。我可以通过迭代所有具有“test”类的div来获取用户控件的clientid吗?
  • 你可以做$(".test").each()然后得到.attr("id")如果那是clientID
【解决方案2】:

当然

您的方法(在 UserControl 中定义的 JavaScript 方法)理论上可以从任何地方轻松调用,只要您可以在客户端找到它,并且它已经定义好了。

现在,在您的 UserControl 中,您可以向外部世界(例如 Page)公开一个公共参数,并且在您的页面中,您可以从用户控件中获取该参数,然后构建对 JavaScript 方法的调用。

【讨论】:

    猜你喜欢
    • 2021-05-21
    • 2010-09-26
    • 2010-09-20
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多