【问题标题】:jquery script adding id and using it doesn't workjquery脚本添加id并使用它不起作用
【发布时间】:2016-03-22 19:31:30
【问题描述】:

我正在尝试使用我的键盘单击使用 id 的按钮。

对于某些按钮,我必须设置 ID,这确实有效。但是,一旦我尝试将键盘用于设置 id 的按钮,它就不起作用了。

我没有收到任何错误,并且由于将 id 添加到元素中有效,我有点困惑为什么我不能在后面的代码中使用新的 set id。

//setting id for first button (works)
$( "a:contains('Im Verband freigeben')" ).attr('id', 'freigabe-verband');
//setting id for second button (works aswell)
$( "a:contains('Vorheriger Einsatz')" ).attr('id', 'vorheriger-einsatz');


$( document ).keydown(function(e) {
 if (e.keyCode == 39) {
    //works, id is available, not set by me
     $("#alert_next").click();

} else if (e.keyCode == 38){
    // doesn't work, but id is set
    $("#freigabe-verband").click();

} else if (e.keyCode == 40){
    // doesn't work, but id is set
    $("#vorheriger-einsatz").click();

} 
return e.returnValue;

});

有人知道为什么吗? https://i.imgur.com/uy6oGFJ.png

【问题讨论】:

  • DOM 不知道你已经给那个对象一个id,你需要委托这个事件。
  • 这对我来说很好用:jsfiddle.net/es8oxgjc。但是我正在那个小提琴中执行jQuery onload。你能把它包装在一个 document.ready 中,然后看看它是否适合你?
  • 如果您尝试模拟锚点,请单击此链接。 stackoverflow.com/questions/773639/…
  • 您的代码确实适用于任何其他绑定的处理程序。 jsfiddle.net/SeanWessell/s2p4wd48
  • 嗯,是的,这是有道理的。不知道如何委派它,得查一下。

标签: javascript jquery contains


【解决方案1】:

要单击 dom 元素,请使用:-

$('#freigabe-verband')[0].click();

$('#freigabe-verband').get(0).click();

示例

$("a").attr('id', 'test');

$(document).keydown(function(e) {
	$('#test')[0].click();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<a href="http://stackoverflow.com">link</a>

【讨论】:

  • [0] 丢失并修复了我的代码 - 我没有更改任何其他内容。
【解决方案2】:

这没有意义。 我复制了您的代码并创建了一个 plunkr,它运行良好。 http://plnkr.co/edit/Eb5QF6mB97Js41NFbr8J?p=preview

// Code goes here
$(function() {
  //setting id for first button (works)
  $( "a:contains('Im Verband freigeben')" ).attr('id', 'freigabe-verband');
  //setting id for second button (works aswell)
  $( "a:contains('Vorheriger Einsatz')" ).attr('id', 'vorheriger-einsatz');
  
  $( document ).keydown(function(e) {
   if (e.keyCode == 39) {
    //works, id is available, not set by me
     $("#alert_next").click();
  
  } else if (e.keyCode == 38){
    // arrow up
    $("#freigabe-verband").click();
  
  } else if (e.keyCode == 40){
    // arrow down
    $("#vorheriger-einsatz").click();
  
  } 
  return e.returnValue;
  
  });  
}
);
<!DOCTYPE html>
<html>

  <head>
    <script data-require="jquery@2.1.4" data-semver="2.1.4" src="https://code.jquery.com/jquery-2.1.4.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>
  </head>

  <body>
    <h1>Hello Plunker!</h1>
    <a href="#" onclick="alert('a');">Im Verband freigeben</a><br>
    <a href="#" onclick="alert('b');">Vorheriger Einsatz</a>
  </body>

</html>

【讨论】:

    【解决方案3】:

    试试这个例子:

    $(document).find("#vorheriger-einsatz").click();
    

    你在事后添加到 DOM,所以除非你再次搜索 dom,否则它不会被找到

    【讨论】:

      猜你喜欢
      • 2021-07-01
      • 1970-01-01
      • 2012-08-02
      • 1970-01-01
      • 2014-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-22
      相关资源
      最近更新 更多