2012-01-11 14 views
5

Últimamente, he estado viendo una gran cantidad de sitios que tienen objetos clicables que no tienen hrefs ni clics en su código html. También intenté alertar sobre sus atributos href, onclick, onmousedown, onmouseup, pero solo dice "indefinido". Me doy cuenta de que hay muchos javascript complicados en estas páginas.botones sin href, onclick, etc.

un sitio en particular, me desconcierta: http://www.sharenator.com/Boy_Teaches_His_Puppy_How_to_Eat/#/doggy_01_Boy_Teaches_His_Puppy_How_to_Eat-0.html

En realidad es bastante buena. Los botones no son seleccionables también. Los ids de los botones son nextBtn, nextBtn2, prevBtn y prevBtn2.

¿Alguien tiene alguna idea de cómo implementar esto?

+1

@karunchadhary Veo que acaba de registrar, bienvenido a la comunidad StackOverflow :) Si una de las respuestas respondido a su pregunta, por favor marca como la respuesta correcta. – Tehnix

Respuesta

4

Puede utilizar la función .click (devolución de llamada) de jQuery (http://api.jquery.com/click/) o .delegate (selector, 'clic', devolución de llamada) (antes de jQuery 1.7) y .on ('clic', selector, devolución de llamada) (jQuery 1.7 +) o .bind ('clic', devolución de llamada).

Gracias a Anthony Grist para señalar que .live() ahora es obsoleto :)

Como así:

<button id="clickable">Click Me!!</button> 

continuación, destinar el botón con jQuery:

$("#clickable").click(function(){ 
    // Send user to this link 
    location.href = "http://www.takemehere.com"; 
}); 

Usted Puede leer más sobre esto en el enlace que brindé y en la página principal de jQuery.

ACTUALIZACIÓN

La página real maneja esto con:

$('#prevBtn').mousedown (onBackward); 

Lo cual onMouseDown llamada:

function onBackward() { 
    showImg (currentId - 1); 
} 

El uso de las teclas de flecha:

$(document).keyup (function (event) { 
    var activeElement = document.activeElement.tagName; 
    if (activeElement == 'INPUT' || activeElement == 'TEXTAREA') return; 
    //alert (window.location.pathname); 

    if (event.keyCode == 39) onForward(); 
    else 
    if (event.keyCode == 37) onBackward(); 
}); 

Consulte http://www.sharenator.com/js/slideshow.js para ver el código fuente de la presentación de diapositivas.

+0

'.live()' está en desuso, debe usar '.on()' (jQuery 1.7+) o '.delegate()' en su lugar (anterior a jQuery 1.7). –

+0

¿cómo implementa la navegación entre las imágenes con las flechas "izquierda" - "derecha"? –

+0

@AnthonyGrist gracias por señalar eso, no había leído la documentación por un tiempo :) Edita mi código según tu sugerencia. – Tehnix

0

Con javascript, encuentre el elemento y asígnele un controlador de eventos onClick. ej .:

var myElement = document.body; // or document.getElementById(...), etc. 
myElement.onclick = function(event) {alert(event);} 

Esto evitará mostrar nada en el HTML, y es cómo el sitio Web que visite hace (no hay otra manera de definir el comportamiento ... excepto tal vez CSS esotérica).

0

Puede intentar usar la biblioteca jQuery ui - esto puede crear botones en la forma que especifique.

jQuery UI

0

Los controladores de eventos son probablemente ligados utilizando un marco de JavaScript, como jQuery. No usan la propiedad onclick del elemento DOM. Consulte this jsFiddle para ver un ejemplo de vincular un controlador de eventos click a un botón con jQuery, luego haga clic en el botón para ver el valor de onclick para ese botón (se visualiza como null en FF 9).

0

Con javascript.He aquí un ejemplo:.

<a id="uniqueId" href="#">Button</a> 

<script> 
    var button = document.getElementById('uniqueId'); 
    button.onclick = function(e) { 
     alert("clicked!"); 
    } 
</script> 
+0

El problema con este método es que todavía me gustaría ver la función cuando ejecuto: 'alert (document.getElementById ('uniqueId'). onclick)' –

0

las funciones de clic se pueden inicializar en js, por ejemplo, $ ("# nextBtn") haga clic (función);

Cuestiones relacionadas