使用jQuery处理转发器内部的按钮单击

时间:2018-07-27 14:59:46

标签: jquery asp.net repeater custom-data-attribute

我的转发器的项目模板中带有一个按钮。我已经向按钮添加了一些数据属性,并希望在使用jQuery单击按钮时能够访问它们。

我尝试了以下方法,但是单击按钮时功能未被点击或出现“未定义”。

首先尝试,我向按钮添加了onclick事件:

<asp:Repeater runat="server" ID="rpt_PrintCert" ClientIDMode="Static">
    <ItemTemplate>
        <li role="presentation"> 
            <button type="button" 
                id="btnPrintCert" 
                class="btn btn-sm certPrint" 
                aria-hidden="true" 
                aria-label="Submit"
                data-CatID ='<%# Eval("CourseCategoryID")%>'
                data-CourseLevel='<%# Eval("CourseLevel")%>'
                data-CourseCategory='<%# Eval("CourseCategory")%>'
                onclick='printCertificate();>Print Certificate</button>
        </li>
    </ItemTemplate>
</asp:Repeater>

function printCertificate() {
    var catID = $(this).data('CatID')
    var courseCategory = $('#btnPrintCert').data('CourseCategory')
    __doPostBack('btnPDF', JSON.stringify({ type: "PDF", action: "Print", CategoryID: catID, ... }));
}

这显示catID和courseCategory为“未定义”。这是有道理的,因为转发器中的控件具有不同的ID。

接下来,我尝试使用button的类:

$('.certPrint').click(function () {debugger
    var catID = $('.certPrint').data('CatID');
});

也尝试过:$('。certPrint')。attr('data-CatID');

当单击按钮时,此功能甚至都不会被击中。

我还能尝试其他什么吗?

1 个答案:

答案 0 :(得分:0)

您输入错了:

$('.cerPrint').data('CatID');

应该是:

$('.certPrint').data('CatID');
_______^

或者只需使用this即可:

$(this).data('CatID');

对于:

var courseCategory = $('btnPrintCert').data('CourseCategory')

您应该使用id selctor #或像这样使用它:

var courseCategory = $('#btnPrintCert').data('CourseCategory');
________________________^
//Or
var courseCategory = $(this).data('CourseCategory');