JQuery:将 onClick 属性转换为 jQuery click

发布于 2024-12-11 04:42:39 字数 459 浏览 0 评论 0原文

我有一个包含 100 多个超链接的网页,所有超链接都设置了 onClick 和 href 属性。这在大多数情况下都有效,但我遇到了像 IE7 这样的浏览器使用 href 属性而不是 onClick 属性的问题。我需要将 onClick 属性设置为默认属性,以便我的函数将在单击时加载。我想我可以使用 jQuery 轻松完成此操作并将 click 事件设置为 onClick 属性值,但我没有任何运气,我将如何解决这个问题?现在,下面的代码将大量的点击事件设置为单个超链接。当我单击超链接时,我可以观看为该超链接多次发送的 GET 事件。

    $("a[href*='/RightSizeOption/NewForm.aspx']").click(function() {
        OpenPopUpPage($(this).attr('href'), RefreshPage); 
        return false;
    });

I have a webpage with 100+ hyperlinks that all have the onClick and href attribute set. This works for the most part but I've run into the issue where browsers like IE7 use the href attribute over the onClick attribute. I need the onClick attribute to be the default so my function will load on click. I figured I could easily do this using jQuery and setting the click event to the onClick attribute value but I'm not having any luck, how would I go about this? Right now the code below sets TONS of click events to a single hyperlink. When I click a hyperlink I can watch the GET events sent multiple times for the hyperlink.

    $("a[href*='/RightSizeOption/NewForm.aspx']").click(function() {
        OpenPopUpPage($(this).attr('href'), RefreshPage); 
        return false;
    });

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清浅ˋ旧时光 2024-12-18 04:42:39

似乎没有意义,除非确切的点击处理程序实际上被绑定了多次。绑定点击的更好方法是使用委托(也使用preventDefault而不是return false作为良好措施):

$('#myParent').delegate("a[href*='/RightSizeOption/NewForm.aspx']", "click", function(event) {
  event.preventDefault();
  OpenPopUpPage($(this).attr('href'), RefreshPage); 
});

#myParent是任何预计不会被破坏的祖先元素;甚至可以是一个包装 div 或“body”,尽管最好选择最接近的、永远不会被破坏的共同祖先。

但令我担心的是多重绑定;例如,如果您的示例代码位于函数内,则该函数将被多次触发。

我也不确定您传递给 OpenPopUpPage 的“RefreshPage”。我必须看看 OpenPopUpPage 做了什么才能冒险猜测。

Doesn't seem to make sense, unless that exact click handler is actually being bound multiple times. A better way of binding clicks is with delegate (also using preventDefault instead of return false for good measure):

$('#myParent').delegate("a[href*='/RightSizeOption/NewForm.aspx']", "click", function(event) {
  event.preventDefault();
  OpenPopUpPage($(this).attr('href'), RefreshPage); 
});

#myParent is any ancestor element that is not expected to get destroyed; could be a wrapper div or 'body' even, though it's better to pick the closest common ancestor that never gets destroyed.

But what worries me is the multiple binding; if your sample code is within a function, that function is being fired multiple times, for example.

I'm also not certain about the "RefreshPage" that you're passing to OpenPopUpPage. I'd have to see what OpenPopUpPage does to even hazard a guess.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文