【问题标题】:how do you access 'this' control's clientID or just do Bootstrap's .popover() in jscript你如何访问'this'控件的clientID或者只是在jscript中做Bootstrap的.popover()
【发布时间】:2015-08-19 10:53:46
【问题描述】:

我所说的“this”是下面 createDiv 函数调用的第一个参数。所以它基本上是被点击的链接按钮。

<asp:LinkButton ID="btn_ReportReply1" runat="server" class="btn btn-danger btn-xs" Text="ReportReply" OnClientClick='<%# String.Format("createDiv(this," + Eval("UniqueNo") +","+ Eval("CommentSeqNo") + "," + Eval("UserNo") + ", \"{0}\");", Eval("LoginID")) %>'   ></asp:LinkButton>

现在我想用“这个”按钮做的是我想调用 Bootstrap .popover() 到它。所以下面我试图获取 btn 的 ClientID 并执行 .popover() 但红色下划线显示在 btn.ClientID 下。而且我不能使用按钮的类,因为有几个按钮具有相同的类。

function createDiv(btn, ReplyNo, CommentSeqNo,ReportedUserNo, LoginID) {

                $('#' + '<%= btn.ClientID %>').popover({
                trigger: 'manual',
                placement: 'left',
                content: vType + vContent

             });

             $('#' + '<%= btn.ClientID %>').popover("show");

}

【问题讨论】:

  • 如果你 console.log(btn) - 它是什么?
  • 您的 JavaScript 是否在 *.aspx、*.ascx 或 *.master 页面中?如果没有,它可能不会在服务器端执行。另外,您不需要使用字符串连接,因为 ClientID 是在服务器端注入的。
  • javascript:__doPostBack('ctl00$MainContent$ListView1$ctrl0$btn_reportReply2',")
  • 另外,这里有一些混淆,因为您将 btn 称为客户端函数参数,但将其称为服务器端控件标识符。两者兼有是没有意义的,因为后者会阻止它成为参数。如果需要作为参数,则 调用需要在每个函数调用中作为第一个参数。

标签: javascript jquery asp.net twitter-bootstrap


【解决方案1】:

OnClientClick 在 DOM 对象上呈现为 onclick。该范围内的 this 是 DOM 对象本身,因此您可以使用 btn.id 来获取 ClientID 或简单地在您的函数中使用 $(btn)

这是一个示例:

标记

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript" src="Scripts/jquery-1.7.1.js"></script>
    <script type="text/javascript">
        function createDiv(btn) {
            $(btn).text($(btn).attr('id'));
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Repeater runat="server" ID="List">
            <ItemTemplate>
                <div>
                    <asp:LinkButton ID="thisIsMyId" Text="<%# Container.DataItem %>" runat="server" OnClientClick="createDiv(this); return false;" />
                </div>
            </ItemTemplate>
        </asp:Repeater>
    </div>
    </form>
</body>
</html>

后面的代码

using System;
namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            List.DataSource = new string[] { "TEST1", "TEST2" };
            this.DataBind();
        }
    }
}

【讨论】:

    猜你喜欢
    • 2011-08-12
    • 1970-01-01
    • 2012-02-13
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    相关资源
    最近更新 更多