2

再会,

请协助:我正在将列表项添加到无序列表中。在列表项中,我有一个没有 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
            }
        });
    }

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

问候

4

2 回答 2

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
            }
        });
    }
于 2012-10-17T13:39:46.787 回答
0

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

this.OpenSection = function (params) {
        $("#menu li").each(function () {
            if ($(this).text().toLowerCase() == params.Name.toLowerCase()) {
                $(this).find("a").trigger("click");
            }
        });
    }
于 2012-10-17T13:52:20.147 回答