2009-12-28 21 views
13

¿Es posible hacer algo como estojQuery: llamada, haga clic en(); de otro clic();

$('#idone').click(function(){ 
alert('we do stuff!'); 
}); 

$('#idtwo').click(function(){ 
$('#idone').click(); 
}); 

... supongo que no, pero ¿hay alguna soluciones posibles?

UPD:

Bien, muy bien. Es un poco más complicado. He instalado un análogo jCarousel - JQueryTOOLS - Scrollable - supongo que es lo que su nombre el enlace: http://flowplayer.org/tools/demos/scrollable/gallery.html

supongo que tiene evento Click() de alguna manera codificado en ella y cuando hago clic en los pulgares el plugin se desplaza al Centro de posición. Luego he vinculado otro evento de clic para que pueda mostrar una imagen grande. Funciona de manera similar al ejemplo en el enlace de arriba

Ahora tengo que hacer clic en esta gran imagen, así que al hacer clic puedo pasar a la siguiente imagen en la galería, lo hice, pero ahora tengo que hacer que el carrusel se desplace automáticamente al próximo pulgar cuando hago clic en esta imagen grande. Por lo tanto, si simplifico mi código, la esencia sigue siendo smth así:

$('#idone').click(function(){ 
alert('we do stuff!'); 
}); 

$('#idtwo').click(function(){ 
$('#idone').click(); 
}); 

donde #idone es un pulgar en la galería, #idtwo es la imagen de vista previa que. No sé por qué la función hará clic por defecto. Otra cosa: mi conjetura fue que vincular el mismo evento al mismo objeto debería reemplazar al anterior, no necesariamente aparece ... Y estoy bastante seguro de que es exactamente clic() ;, no mouseup \ abajo, etc. causa call

$('#idone').click(); 

al cargar la página hace el truco y se desplaza carrusel al pulgar con id = "Idone"

por si acaso: jquery-1.3.2.js

gracias a todos por sus respuestas, y discúlpeme mi cojo Inglés, no hay tiempo para cepillarse (:

! UPD:

ok! así que renuncié a este)). Pero para cerrar esta pregunta y poner fin a esta discusión, tengo que saberlo. Todos ustedes, que escribieron que es posible y sugirieron variantes. ¿LOS HABÉIS INTENTADO? ¿Realmente funcionan para ti? ¿Soy yo, quién está equivocado? Y - ¡Gracias de todos modos!

+0

han intentado? es posible. –

+0

Supongo que está intentando activar el evento click en #idone del evento secode click? – Tinku

+0

¿Lo tienes? Lo intenté, sin suerte ... estoy bastante seguro de que el sintaxis es correcto, aunque – dr3w

Respuesta

4

¿Define una función separada que es invocada por ambos eventos?

function doSomething() { 
alert('we do stuff!'); 
} 

$('#idone').click(doSomething);  
$('#idtwo').click(doSomething); 

o simplemente

$('#idone, #idtwo').click(doSomething); 

[EDIT - jQuery Scrollable]

¿Ha intentado utilizar esto con las miniaturas en jQuery Scrollable:

$('#idone').next(); 

(presumo #idone es desplazable)

+0

+1, esto era lo que estaba por proponer. –

+0

Puede hacer '$ ('# idone, #idtwo'). Hacer clic (doSomething);' - no necesita otra función anónima. – Kobi

+0

@Kobi: gracias, tienes razón. – Groo

1

En realidad llamando:

$("#idone").click(); 

va a hacer lo que quiere: llamar a los controladores de eventos en click()#idone.

Dicho esto, recomendaría dividirlo en una función separada ya que el encadenamiento de controladores de eventos como este tiene el potencial de confundir a alguien más que lee el código. Por ejemplo:

$('#idone').click(idone_click); 
$('#idtwo').click(idtwo_click); 

function idone_click() { 
    alert("id one click"); 
} 

function idtwo_click() { 
    idone_click(); 
} 

Por supuesto, si simplemente desea que ambos hacen lo mismo se puede hacer esto:

$("#idone, #idtwo").click(function() { 
    alert(this.id + " clicked"); 
}); 
17

Esto habría otra posibilidad:

$('#idone').click(function(){ 
alert('we do stuff!'); 
}); 

$('#idtwo').click(function(){ 
$('#idone').trigger('click'); 
}); 

edit: Acabo de ver que su código debería funcionar así.

+0

por desgracia .. :( – dr3w

+0

$ ('# idtwo') Haga clic en (function() {$ ('# Idone') del disparador ('clic');. }); . Esto funcionó para mí – MoizNgp

+0

Esto también. no funcionó para mí. –

1

Ya veo. Entonces es posible que desee hacer algo como esto.

$('#image_wrap img').click(function(){ // big image is clicked 
    // figure out the active element of the items below 
    $active_element = $('.scrollable .items .active'); 

    // move along to the element to its right 
    $nextone = $active_element.next(); 

    // trigger a click on this element 
    $nextone.trigger('click'); 
}); 

De esta manera, cuando hace clic en la imagen grande, se activa un evento de clic en la siguiente imagen de vista previa en la lista.
(Si no existe ese elemento, jQuery es agradable y no hace nada -. Sin errores)

+0

@ RamboNo5: de nuevo para su tiempo, pero supongo que simplemente no funcionará = \ con esta línea $ nextone.trigger ('clic'); usted está tratando de hacer exactamente lo que yo ' Estoy atascado en este momento. Ignorando las peculiaridades, la idea es la misma llamada: haga clic en() desde el clic() y no funciona para mí. – dr3w

+0

pero su código dio una idea para optimizar el que ya tengo :) así que gracias ¡mucho! – dr3w

0

Puede hacerlo simplemente por Jquery Trigger .it Ejecutar todos los manipuladores y sus comportamientos asociados a los elementos coincidentes para el tipo de evento dado . Como de acuerdo con tu ejemplo

$('#idone').click(function(){ 
 
alert('I Am First Button'); 
 
}); 
 

 
$('#idtwo').click(function(){ 
 
//THIS WILL CALL FIRST METHOD 
 
$('#idone').trigger('click'); 
 
alert("I Am Second One .!"); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id="idone">PASS 1</span> 
 
<br> 
 
<button id="idtwo">PASS 2</span>