在动态添加的锚点上调用click事件

时间:2012-10-17 13:29:54

标签: javascript jquery

美好的一天,

请协助:我将列表项添加到无序列表中。在列表项中,我有一个没有ID的锚。我试图调用click事件处理程序,但显然我做错了。

列出项目呈现:

this.RenderMeNav = function (params) {
        var ul, li, a, heading;
        var me = ARRAY.Search({
            List: params.Permissions,
            Properties: ["Group"],
            Value: "me"
        });
        heading = $("<a href=\"javascript:void(0);\" class=\"heading\">Me<span class=\"icon-vertical icon-up\"/></a>");
        ul = $("<ul />");
        for (var p in me) {
            li = $("<li></li>");
            a = $("<a href=\"" + me[p].Url.replace("~/", "") + "\">" + me[p].Name + "</a>");
            a.click(function (e) {
                ShowProcessing();
                ifrm.document.location.href = $(this).attr("href");
                e.preventDefault();
            });
            li.append(a);
            ul.append(li);
        }
        $("#menu").append(heading);
        $("#menu").append(ul);
    };

然后当点击其他内容时,我会调用此函数:

this.OpenSection = function (params) {
        $("#menu li").each(function () {
            if ($(this).text().toLowerCase() == params.Name.toLowerCase()) {
                $(this).click(); //I FOUND THE ANCHOR AND NOW I WANT TO INVOKE IT'S CLICK EVENT
            }
        });
    }

我尝试了一些类似的其他问题的建议,但无济于事。

此致

2 个答案:

答案 0 :(得分:0)

要触发已定义的点击事件,您需要使用函数trigger()

所以将代码更改为:

this.OpenSection = function (params) {
        $("#menu li").each(function () {
            if ($(this).text().toLowerCase() == params.Name.toLowerCase()) {
                $(this).trigger('click'); //I FOUND THE ANCHOR AND NOW I WANT TO INVOKE IT'S CLICK EVENT
            }
        });
    }

答案 1 :(得分:0)

您正在将事件附加到锚点,但会触发列表项的单击。尝试找到列表项中的锚点并触发它的点击:

this.OpenSection = function (params) {
        $("#menu li").each(function () {
            if ($(this).text().toLowerCase() == params.Name.toLowerCase()) {
                $(this).find("a").trigger("click");
            }
        });
    }
相关问题