2015-12-16 13 views
6

idを使用してボタンをクリックする際にキーボードを使用しようとしています。jqueryスクリプトでIDを追加して使用しても機能しない

一部のボタンでは、実際に動作するIDを設定する必要がありました。しかし、私はidを設定するボタンのキーボードを使用しようとすぐに、それは動作しません。

私はエラーが発生せず、要素にIDを追加すると、後でコード内で新しいセット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

+0

DOMは、あなたが 'id'オブジェクトその与えられていることを知らない、あなたは、イベントを委任する必要があります。 –

+0

これは私のためにうまくいく:https://jsfiddle.net/es8oxgjc/。しかし、私はそのフィドルでjQueryを実行しています。あなたはdocument.readyでそれを包み込んで、それがあなたのために働くかどうか確認できますか? – andi

+0

アンカーをシミュレートする場合は、このリンクをクリックしてください。 http://stackoverflow.com/questions/773639/how-can-i-simulate-an-anchor-click-via-jquery#answer-773738 –

答えて

3

を発見したことはありません使用: -

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

または

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

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

 
$(document).keydown(function(e) { 
 
\t $('#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

ありがとうございました。これは私の問題を解決しました! –

+0

@MaxZoomいいえ?これ[ここ](https://jsfiddle.net/Lfubrn2k/)を試してみてください。 – BenG

+0

[0]が失われ、私のコードが修正されました - 私は何も変更していません。 –

0

この例を試してみてください。

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

あなたは事後にDOMに追加しているあなたは再びDOMを検索しない限り、DOM要素をクリックし

+0

私はそれを試しましたが、うまくいきませんでした。 –

1

それは意味がありません。 コードをコピーして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="[email protected]" 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>

関連する問題