【问题标题】:jQuery replacement for onclickjQuery 替换 onclick
【发布时间】:2009-11-25 02:57:40
【问题描述】:

我最近刚刚发现了 jQuery 的强大功能。不过只是一个简单的问题。

什么是 onclick="DeleteSomething('THE ID NUMBER LOADED IN BY SERVER SIDE')" 的替代品?

有没有办法以某种方式将自定义信息(例如 ID)传递给 jquery onclick?还是我必须坚持老式的方式?

非常感谢!

亚当

【问题讨论】:

    标签: javascript jquery javascript-events


    【解决方案1】:

    我通常使用 rel="" 来表示一些我可能需要附加到按钮或诸如此类的额外数据。

    例如

    <input class="btnDelete" rel="34" value="Delete" />
    

    然后在 jquery 中

    $('.btnDelete').click(function() {
        DeleteMethod($(this).attr("rel"));
      });
    

    【讨论】:

    • 你甚至可以给它一些非 rel 属性(即:deleteid)并以同样的方式访问它:$(this).attr("deleteid")
    • 哇,我不知道我能做到这一点。我认为这就是解决方案!
    【解决方案2】:

    如果把要删除的对象的ID粘在rel参数中,可以这样:

    <script type="text/javascript>
    
    $('a.deleter').click(function(){
       if($(this).attr("rel") != ""){
          DeleteSomething($(this).attr("rel"));
       }
    });
    
    </script>
    <a href="javascript:void(0)" rel="54" class="deleter">Delete Widget</a>
    

    【讨论】:

      【解决方案3】:
      $(document).ready(function () {
        $('#selector').click(function() {
          //here goes your onclick code
        });
      );
      

      请发布一些标记以获得更多帮助。

      另外,您应该阅读 jQuery 入门 资源,链接在库的 main page 中。

      【讨论】:

        【解决方案4】:

        在 jQuery 中,您更有可能执行以下操作:

        $('a').click(function(){
            # code here
        });
        

        'a' 是您想要用来查找正确链接的任何选择器。

        回应您的评论:

        正如其他人提到的那样,最好的方法可能是在链接的属性之一中提供动态数据:

        <a rel="{id}" >
        
        $('a').click(function(){
            deleteFunction($(this).attr('rel'));
        });
        

        【讨论】:

        • 对,但我如何将动态数据传递给该函数?就像说它是一个 $(".DeleteComment").click 并且您有多个具有该类的按钮,当单击时,它们会传入要删除的 ID?以前我只是将它直接插入到 onclick="DeleteComment("the dynamic id")" 的参数中。
        【解决方案5】:

        而不是这个:

        <button onclick="DeleteSomething('THE ID NUMBER LOADED IN BY SERVER SIDE')">
        

        这样做:

        <button id="thing">
        <script>
        $(function() {
            $("#thing").click(function() {
                DeleteSomething('THE ID NUMBER LOADED IN BY SERVER SIDE');
            }
        }
        <script>
        

        【讨论】:

          【解决方案6】:

          如果你这样做会更干净:

          <tag class="someclass" prop1="id from serverside" />
          
          $('.someclass').click(function(){
             var prop1 = $(this).attr('prop1');
             //DeleteSomething(prop1)
          });
          

          【讨论】:

            【解决方案7】:

            使用服务器将 {ID} 替换为实际 ID。

            HTML:

            <form id="deleter">
              <input type="hidden" name="id" value="{ID}" \>
              <input type="submit" value="Delete" rel="{ID}" \>
            </form>
            

            jQuery:

            $('form#deleter input[type="submit"]').click(function() {
              var id = $(this).attr('rel');
              DeleteSomething(id);
              return false;
            }
            

            不要忘记为没有启用 Javascript 的人实现删除服务器端!

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-12-31
              • 2011-05-25
              • 1970-01-01
              • 2013-07-18
              • 2012-03-11
              • 1970-01-01
              相关资源
              最近更新 更多