javascript - (jquery/javascript)如何让点击功能在关键事件后工作

标签 javascript jquery keyevent

我有两个 ID 为“display”和“display2”的 div,我在其中放置函数的结果。

下面的代码的作用是打印 one two three four连续,跨度从 one 开始当您按向左键和右键时,它会删除上一个项目的跨度并在下一个项目上添加跨度。

我在最底部还有一个点击功能,当点击span时,display2将显示一个应该计数的数字。

问题是:

当屏幕加载且未按下任何键时,单击跨度,例如 <span>one</span>通常会增加显示 2 中的数字计数。

一旦我按下左右键,假设跨度为 <span>three</span> ,如果我点击尝试点击 <span>three</span> ,#display2 中的计数器不执行任何操作。这是为什么?我该如何解决它?

   var arr1 = ["one ", "two ", "three ", "four "];
    var arr2 = ["<span>one </span>", "two ", "three ", "four "];
    var counter = 0;

function count(){
  if (counter>0 && event.keyCode==37){
    counter--;
  }
  else if (counter<3 &&event.keyCode==39){
     counter++;
           }
}

function spaN() {
  arr2[counter] = '<span>' + arr1[counter] + '</span>';
    if (event.keyCode==37){
   arr2[counter+1] = arr1[counter+1];
  }
  else if (event.keyCode==39){
   arr2[counter-1] = arr1[counter-1];  
           }
}

$(document).keydown(function(event){
switch(event.keyCode){
  case 37:
    count();
    spaN();
    $('#display').html(arr2);
    break;
  case 39:
    count();
    spaN();
    $('#display').html(arr2);    
    break;
       }
});

$('#display').html(arr2);

var k = 0;
$('span').click(function(){
k++;
 $('#display2').html(k);
})

最佳答案

此行可能导致问题:$('span').click(function(){....

该选择器将为您提供页面上的所有当前范围标签。 更新显示后,其中的跨度将不再与事件绑定(bind)的跨度相同。 因此,您需要将事件委托(delegate)给文档、正文或显示,以便插入显示中的任何新范围也可以使用单击处理程序。 另一种方法是每次设置显示的 .html() 时手动重新分配点击处理程序,但这效率很低。

尝试这样的事情:

$('body').on('click', 'span', function() {
    k++;
    $('#display2').html(k);
});

基本上,您告诉主体在单击任何跨度后运行该函数。这将在运行时进行检查,因此只要 body 标记本身不被替换,它将应用于将来创建的任何范围。

关于javascript - (jquery/javascript)如何让点击功能在关键事件后工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43225417/

相关文章:

javascript - 如何在使用 datetimepicker 时显示 future 7 天?

javascript - 使用 REST Api 从 JET 访问 Oracle 文档云服务

javascript - 推特 Bootstrap 。为什么模态事件在 JQuery 中有效,但在纯 JS 中无效?

C# 控制台按键事件

C# - System.Windows.Forms.Keys - 如何将应用程序热键保存在一个地方

javascript - 图标传单 map javascript

javascript - Internet Explorer 拦截 XML 响应

javascript - 使用 Jquery 在点击时显示 div

javascript - Canvas 导出为 png 不导出 backgroundImage

c# - 如何检测 Control + 不是 VirtualKey 键盘组合?