2015-12-16 11 views
6

sto provando a usare la mia tastiera per fare clic su un pulsante utilizzando l'id.jquery script aggiunta di id e utilizzo non funziona

Per alcuni pulsanti ho dovuto impostare l'ID, che in realtà funziona. Ma non appena cerco di usare la tastiera per i pulsanti in cui imposto l'id, non funzionerà.

Non ricevo errori e dal momento che l'aggiunta dell'ID all'elemento funziona, sono un po 'confuso perché non riesco a utilizzare il nuovo ID impostato più avanti nel codice.

//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; 

}); 

Qualcuno sa perché? https://i.imgur.com/uy6oGFJ.png

+0

Il DOM non sa che avete dato che l'oggetto di un 'id', è necessario delegare l'evento. –

+0

Funziona bene per me: https://jsfiddle.net/es8oxgjc/. Ma sto eseguendo l'onload di jQuery in quel violino. Puoi avvolgerlo in un documento. Già e vedere se funziona per te allora? – andi

+0

Se si sta tentando di simulare un ancoraggio, fare clic sul collegamento. http://stackoverflow.com/questions/773639/how-can-i-simulate-an-anchor-click-via-jquery#answer-773738 –

risposta

3

Per fare clic su un elemento DOM, usare: -

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

o

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

Esempio

$("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

Grazie mille. Questo ha risolto il mio problema! –

+0

@MaxZoom No? prova questo [qui] (https://jsfiddle.net/Lfubrn2k/). – BenG

+0

Il [0] mancava e ha corretto il mio codice - non ho cambiato nient'altro. –

0

Prova questo esempio:

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

Stai salvando al DOM dopo il fatto in modo meno che non si cerca il DOM ancora una volta non sarà trovato

+0

L'ho provato, ma non ha funzionato. –

1

Non ha senso. Copia il tuo codice e creo un plunkr, funziona bene. 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>