【问题标题】:semantically correct jQuery trigger语义正确的 jQuery 触发器
【发布时间】:2011-01-18 14:37:49
【问题描述】:

在使用 jQuery 进行开发时,我经常转而使用 href='#' id='myTrigger' 作为事件的触发器,其中我结合 return false 来阻止它实际上被用作超链接。每当我以前在这里发布代码时,我都会被一些更有经验的人私刑处死,因为他们使用超链接作为触发器。我应该使用 input type="button",还是只给任何元素一个 ID 并将其用作触发器?

jQuery 触发器的最佳实践是什么?

【问题讨论】:

    标签: jquery triggers semantics


    【解决方案1】:

    这取决于你在做什么,以及元素的默认行为是什么。

    例如,如果您通过在弹出窗口中打开页面来替换链接的默认行为,那么使用链接非常有意义。搜索引擎仍会看到该链接,并且对于那些禁用了客户端脚本的少数人来说,它会优雅地降级。

    另一方面,如果您使用的事件与您使用链接的导航完全不同,您应该使用不同的元素。

    要停止链接的默认行为,您可以使用preventDefault 方法。示例:

    $('a#info').click(function(e){
      alert('info');
      e.preventDefault();
    });
    

    请注意,不需要使用 id 来定位要捕获事件的元素。 id 是定位元素的有效方法,但任何定位元素的方法都是有效的。示例:

    <div class="button">Eat me</div>
    
    $('.button').click(function(){ alert('Eaten.'); });
    

    【讨论】:

      【解决方案2】:

      我通常会这样做:

      <div id=myTrigger'>Click Me</div>
      

      与:

      $('#myTrigger').click( function() { /* do stuff */ })
      

      ...然后您不需要return false 来停止href 触发,我过去曾遇到过问题;例如,如果您在 JavaScript 运行之前单击它,它无论如何都会触发。这种方式对我来说似乎也有点“正确”,但还有其他方法可以做到。

      当然,您可以使用几乎任何东西来点击; div、span、img、按钮等 - 我几乎不再使用提交,总是像上面那样使用按钮。只使用当时最好的...

      【讨论】:

        【解决方案3】:

        你应该使用适合情况的任何东西。不要添加超链接,只需将点击事件添加到已经存在的任何元素。如果是&lt;p&gt;,则将点击事件添加到&lt;p&gt;,如果是&lt;img&gt;,则将其添加到其中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-02-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-03-03
          • 2017-03-28
          相关资源
          最近更新 更多