在jquery中,当使用.last()时,为什么函数的另一部分会停止工作



我如何同时做到这两件事-从最后一行开始删除行,并能够在删除后添加行?我的问题是,当我从代码中删除.last()时,它会删除从第一行开始的,而不是从最后一行开始的。但是如果我添加.last(),在删除行之后就无法添加任何行。这里有一个页面链接,包含页面源代码和框架源代码。它真的很长,我不知道在这里要加多少。https://www.mturk.com/mturk/preview?groupId=330XZFCZ7R28BGIGI0U62D26WPATXS

    $( document ).ready(function() {
       $("#receipt_date").focus();
       window.scrollTo(x-coord, y-coord);
    });
    $(document).keydown(function(f) {
      if(f.which == 219) {
         f.preventDefault();
         //clicks an href link by its id
         $('#add_item')[0].click();   
      }
      else if (f.which==221){
         f.preventDefault();
         //clicks an href link by its class
         $('a[class="delete_row"]').last()[0].click();
      } 
      else if(f.which == 13) {
         f.preventDefault();
         //clicks a submit button not an href link
         $('input[id="submit_button"]').trigger('click');
      }
  });

$('#add_item').first()上的first()是浪费时间,因为ID必须是唯一的,jQuery只能看到第一个匹配项(如果有重复项)。

在我看到HTML之前,这只是一个猜测,但如果你没有add_item类的任何元素,那么下面代码中的[0]将返回未定义,因此下面的click()将崩溃,阻止页面上所有后续的JavaScript运行:

更改此项:

 $('#add_item').first()[0].click();

到此:

 $('#add_item').click();

如果元素不匹配/不存在,第二个版本jQuery将以静默方式失败。

最新更新