首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用图片的ALT来触发jquery点击事件

问如何使用图片的ALT来触发jquery点击事件
EN

Stack Overflow用户
提问于 2014-09-10 20:42:05
回答 3查看 407关注 0票数 0

我的asp.net页面中有以下图片:

代码语言:javascript
复制
<asp:Image ID="imgExpCol" AlternateText="plus" ClientIDMode="Static" ImageUrl="~/theImages/subTaskPlus.png" runat="server" CssClass="imgExpCol" />

我的JQuery中包含以下内容:

代码语言:javascript
复制
$(function () {
    $("body").on('click', "#imgExpCol", function () {
        alert("test");
        $(this).closest("tr").after("<tr><td></td><td colspan = '999'>" + $(this).next().html() + "</td></tr>")
        $(this).attr("src", "../theImages/subTaskMinus.png");
        $(this).attr("alt", "minus");
    });
    $("body").on('click', "#imgExpCol", function () {
        alert("test2");
        $(this).attr("src", "../theImages/subTaskPlus.png");
        $(this).attr("alt", "plus");
        $(this).closest("tr").next().remove();
    });
});

单击加号时,它会展开TR并显示减号。单击减号时,它会折叠TR并显示加号。

如果我使用的是当前的#imgExpCol,两个事件都会触发。我正在使用两个图像不同的ALT文本。如何使用ALT文本而不是ID?

EN

回答 3

Stack Overflow用户

发布于 2014-09-10 20:47:35

您可以在选择器中使用alt属性,因此您的JS将变为:

代码语言:javascript
复制
$(function () {
    $("body").on('click', "#imgExpCol[alt=firstalttext]", function () {
        alert("test");
        $(this).closest("tr").after("<tr><td></td><td colspan = '999'>" + $(this).next().html() + "</td></tr>")
        $(this).attr("src", "../theImages/subTaskMinus.png");
        $(this).attr("alt", "minus");
    });
    $("body").on('click', "#imgExpCol[alt=secondalttext]", function () {
        alert("test2");
        $(this).attr("src", "../theImages/subTaskPlus.png");
        $(this).attr("alt", "plus");
        $(this).closest("tr").next().remove();
    });
});
票数 1
EN

Stack Overflow用户

发布于 2014-09-10 20:49:46

使用单击处理程序并使用条件来了解alt。根据情况,做点什么。

代码语言:javascript
复制
$("body").on('click', "#imgExpCol", function () { //Is delegation really needed here?
//$("#imgExpCol").on('click', function () {
    if($(this).attr('alt') === 'plus'){
        alert("test");
        $(this).closest("tr").after("<tr><td></td><td colspan = '999'>" + $(this).next().html() + "</td></tr>")
        $(this).attr("src", "../theImages/subTaskMinus.png");
        $(this).attr("alt", "minus");
    }else{
        alert("test2");
        $(this).attr("src", "../theImages/subTaskPlus.png");
        $(this).attr("alt", "plus");
        $(this).closest("tr").next().remove();
    }
});

性能提示:将$(this)缓存到变量中。它会阻止你创建x个jQuery对象。

票数 1
EN

Stack Overflow用户

发布于 2014-09-10 20:50:05

绑定两个事件并不好,例如使用类来确定元素的状态。

代码语言:javascript
复制
$(function () {
    $("body").on("click", "#imgExpCol", function(){
        var t = $(this);
        // check if is expanded
        if(t.hasClass("expanded"))
        {
            t.attr("src", "../theImages/subTaskPlus.png");
            t.attr("alt", "plus");
            t.closest("tr").next().remove();
            t.removeClass("expanded");
        }
        else
        {
            t.closest("tr").after("<tr><td></td><td colspan = '999'>" + $(this).next().html() + "</td></tr>")
            t.attr("src", "../theImages/subTaskMinus.png");
            t.attr("alt", "minus");
            t.addClass("expanded");
        }
    });
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25765765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档