link - jquery trigger change
Trate de hacer clic jQuery no funciona (4)
Estoy descubriendo por qué este simple script no funciona:
jQuery.noConflict();
jQuery(document).ready(function() {
jQuery(''.next_button a'').trigger(''click'');
});
noConflict
es necesario porque también carga prototipo / scriptaculous en esta página.
Si sustituyo .trigger(''click'')
con otra función (es: .css(...)
esto funciona bien. Solo la activación parece ir mal.
Solo puedes activar un clic que jQuery ha creado. Es una de las pequeñas y lindas peculiaridades de jQuery.
como lo que ha respondido Gary. el código de abajo no funcionará.
$(''#border_wrap'').trigger(''click'');
$(''#border_wrap'').click(function(e){
console.log("clicked1");
});
pero esto lo hará :)
$(''#border_wrap'').click(function(e){
console.log("clicked1");
});
$(''#border_wrap'').trigger(''click'');
¿Cómo puedo simular un clic de anclaje a través de jquery? Compruebe este enlace y vea esta respuesta por Stevanicus .
$(''a#swaswararedirectlink'')[0].click();
Pensé que esta demostración no funcionaría pero sí funciona (Chrome 12). alert
dos mensajes, uno para cada evento de clic.Uno es creado por jQuery y el otro es nativo, pero pensé que solo los eventos jQuery podrían activarse.
Edición: Sí, el click
no sigue href
.
Edición 2: el evento que desea activar manualmente es en realidad un evento creado por un complemento de carrusel Prototype. Para el código de abajo, estoy asumiendo que es este . Si ese es el caso, ¿por qué no puedes simplemente disparar el evento usando Prototype o de forma nativa ... así:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Title</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<style type="text/css">
#carousel-wrapper {
width:100px;
height:100px;
overflow:hidden;
border:1px dashed red;
}
#carousel-content {
width:500px;
}
#carousel-content .slide {
float:left;
width:100px;
height:100px;
}
</style>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/prototype/1.7.0.0/prototype.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.3/scriptaculous.js"></script>
<script type="text/javascript" src="http://prototype-carousel.googlecode.com/files/carousel-min.js"></script>
<script type="text/javascript" src="https://github.com/kangax/protolicious/raw/5b56fdafcd7d7662c9d648534225039b2e78e371/event.simulate.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
jQuery.noConflict();
function fakeClick(event, anchorObj) {
if (anchorObj.click) {
anchorObj.click()
} else if(document.createEvent) {
if(event.target !== anchorObj) {
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
var allowDefault = anchorObj.dispatchEvent(evt);
// you can check allowDefault for false to see if
// any handler called evt.preventDefault().
// Firefox will *not* redirect to anchorObj.href
// for you. However every other browser will.
}
}
}
</script>
</head>
<body>
<div id="carousel-wrapper">
<div id="carousel-content">
<div class="slide">1</div>
<div class="slide">2</div>
<div class="slide">3</div>
</div>
</div>
<div>
<a href="javascript:" class="carousel-jumper" rel="slide-1">Jump to slide 1</a>
<a href="javascript:" class="carousel-control" rel="prev">Previous slide</a>
<a href="javascript:" class="carousel-control" id="next" rel="next">Next slide</a>
</div>
<script type="text/javascript">
new Carousel(''carousel-wrapper'', $$(''#carousel-content .slide''), $$(''a.carousel-control'', ''a.carousel-jumper''));
document.observe("dom:loaded", function() {
// $$(''a[rel="next"]'')[0].simulate(''click'');
fakeClick(event, document.getElementById(''next''));
});
</script>
</body>
</html>
Hay dos ejemplos en esta demostración de activación de eventos (uno está comentado, pero puede cambiar por el mismo resultado). Una de Trigger es un evento con Prototype que usa event.simulate.js
y la otra utiliza la función fakeClick()
de ¿Cómo puedo simular un clic en una etiqueta de ancla? . Cualquiera de las dos está funcionando para mí en Chrome 12.