【问题标题】:failed to get .ascx server control id无法获取 .ascx 服务器控件 ID
【发布时间】:2013-03-05 08:50:12
【问题描述】:

下面是我的 .ascx 页面中的一些示例代码,我正在尝试使用 jquery 执行某些操作,$("input") 为我服务很好,但 $("asp:Label") 无法正常工作。我应该包括什么才能使$("asp:Label") 工作

<asp:Label ID="lblInvolvedMembers" runat="server"></asp:Label>
<asp:Label ID="lblAcceptedBy" runat="server">    </asp:Label>
<input type="text" id="family" value="family " />
<input type="button" id="family1" value="button" />

//here i am trying to get server control to perform some action,   $("input") served me well but  $("asp:Label") is not working. what should i include inorder to make  $("asp:Label") work

$("asp:Label").hover(function() {
        Tip.text('');
        var ToolTipID = $(this).attr('id');
        var height = $(this).height() + 10;
        var offset = $(this).offset();
        if (data[ToolTipID].split('<br\>').length - 1) {
            var temp = data[ToolTipID].split('<br\>').length - 1;
            height = temp * 10;
        } else {
            height = 10;
        }

  $("input").hover(function() {
        Tip.text('');
        var ToolTipID = $(this).attr('id');
        var height = $(this).height() + 10;
        var offset = $(this).offset();
        if (data[ToolTipID].split('<br\>').length - 1) {
            var temp = data[ToolTipID].split('<br\>').length - 1;
            height = temp * 10;
        } else {
            height = 10;
        }

【问题讨论】:

  • 奇怪你有Visible="false"的标签?
  • 哎呀,忽略它,只是一个示例数据,我会编辑它

标签: javascript jquery asp.net html


【解决方案1】:

你会想要改变

<asp:Label ID="lblInvolvedMembers" runat="server"></asp:Label>

类似

<asp:Label ID="lblInvolvedMembers" runat="server" CssClass="label"></asp:Label>

那么你可以在这里使用 jQuery 选择器

$('.label').hover(function() {

而不是

$("asp:Label").hover(function() {

这样,所有的标签都会有jQuery悬停功能。

如果您想悬停特定标签,则必须使用

$('#<%= lblInvolvedMembers.ClientID %>').hover(function() {

ASP 标签在被传递到客户端浏览器之前被处理,因此 javascript 可以对其进行操作,因此

lblInvolvedMembers 会变成 ctl0_label_lblInvolvedMembers 之类的东西。

更新

看起来你还没有关闭你的 jQuery 函数

$('.label').hover(function() {
        Tip.text('');
        var ToolTipID = $(this).attr('id');
        var height = $(this).height() + 10;
        var offset = $(this).offset();
        if (data[ToolTipID].split('<br\>').length - 1) {
            var temp = data[ToolTipID].split('<br\>').length - 1;
            height = temp * 10;
        } else {
            height = 10;
        }
});

$("input").hover(function() {
    Tip.text('');
    var ToolTipID = $(this).attr('id');
    var height = $(this).height() + 10;
    var offset = $(this).offset();
    if (data[ToolTipID].split('<br\>').length - 1) {
        var temp = data[ToolTipID].split('<br\>').length - 1;
        height = temp * 10;
    } else {
        height = 10;
    }
});

我不确定Tipdata 是什么,但您可以在这个jsFiddle 上看到一个有效的.hover() 函数-> http://jsfiddle.net/XF4Zk/ 这里的标签ID 代表由创建的控件的客户端ID ASP.NET,这就是为什么你会使用lblInvolvedMembers.ClientID 来获取 Javascript 控件的值

【讨论】:

  • 似乎这在我的环境中不起作用,是因为我使用的是 .ascx 吗?
【解决方案2】:

试试

$('input[id$=lblInvolvedMembers]').hover(function() {
 });

【讨论】:

    【解决方案3】:

    试试这个:

    $('#<%=Label.lblInvolvedMembers%>').hover();
    

    或者这个:

    $('#<%=Label.lblInvolvedMembers%>').hover();
    

    【讨论】:

    • 嗨 dipesh,我更喜欢获取动态控件 ID,还有其他代码吗?
    • @CheemunLow 如果其动态加载的内容则使用 .on 而不是仅仅悬停..因为 .on 也适用于动态加载的 DOM
    • $('#').on('hover',function(){});
    • 但是它只会调用 lblInvolvedMembers 控制权吗?我的 lblAcceptedBy 控件怎么样?
    • @CheemunLow 哦,兄弟,我刚刚举了个例子,你也可以将它用作 $('').on('hover',function(){ /****/ });
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多