重写我的代码的一部分

时间:2011-08-02 04:15:47

标签: jquery

我正在努力想出一个完成任务的更好方法。我有大约30个不同的数据表。每个模块一个,它们共享一个带有编辑类的按钮。编辑按钮获取按钮的ID,该按钮是DB id行,并将其带到模块的编辑表单页面。所以要记住所有这些,以防止冒泡和其他所有。有没有人知道更好的方式来写这个。

这只是一个如何编写的例子。

$('.edit').live('click', function(e) {
    e.preventDefault();
    var templateID = $(this).attr('id');
    if(!$('div.right_content').hasClass("loading")){
        $('div.right_content').addClass("loading").load('modules/forms/edit/templates.php?templateID=' + templateID, 
        function() {
            $(this).removeClass("loading");
        });
    }
});

编辑:

  <table id="templatesPageList" class="rounded-corner dataTablePageList">
    <thead>
      <tr>
        <th scope="col" class=""></th>
        <th scope="col" class="">ID</th>
        <th scope="col" class="">Description</th>
        <th scope="col" class="">Edit</th>
        <th scope="col" class="">Delete</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><input type="checkbox" name="templates" value="1" /></td>
        <td>1</td>
        <td>Main Site Template</td>
        <td><a href="#"><img src=
        "http://www.kansasoutlawwrestling.com/manager/images/user_edit.png" class="edit"
        alt="" title="" border="0" id="1" name="1" /></a></td>
        <td><a href="#" class="ask"><img src=
        "http://www.kansasoutlawwrestling.com/manager/images/trash.png" class="delete"
        alt="" title="" border="0" id="1" name="1" /></a></td>
      </tr>
      <tr>
        <td><input type="checkbox" name="templates" value="2" /></td>
        <td>2</td>
        <td>Event Page</td>
        <td><a href="#"><img src=
        "http://www.kansasoutlawwrestling.com/manager/images/user_edit.png" class="edit"
        alt="" title="" border="0" id="2" name="2" /></a></td>
        <td><a href="#" class="ask"><img src=
        "http://www.kansasoutlawwrestling.com/manager/images/trash.png" class="delete"
        alt="" title="" border="0" id="2" name="2" /></a></td>
      </tr>
    </tbody>
  </table>

1 个答案:

答案 0 :(得分:1)

你的代码看起来很好;如果要提高性能,可以使用.delegate()而不是.live()。通常,您应该始终在.live()上使用.delegate()。

$('tr').delegate('.edit', function(e) {...});

有关性能改进的详细信息,请参阅此主题:Jquery live() vs delegate()