2009-12-15 10 views
16

tengo funciónjQuery función de llamada por su nombre

<script type="text/javascript"> 
    $(function() { 
     $("#search").click(function() { 
      var text = $("#searchText").val(); 
      $.getJSON("Search", { world: text, filter: text }, function(data) { 
       $("tr.DataRow").toggle(false); 
       for (i = 0; i < data.length; i++) { 
        $("#obj" + data[i]).toggle(true); 
       } 
      }); 
     })    
    }); 


</script> 

ahora tengo otra función

<script type="text/javascript"> 

    $(function() { 
     $('#searchText').bind('keypress', function(e) { 
      if (e.keyCode == 13) { 

      } 
     }); 
    }); 
</script> 

¿Cómo puedo llamar primera función de la segunda función?

+13

@kusanagi Se considera una cortesía adecuada marcar las respuestas correctas a sus preguntas como "aceptadas". Has hecho 11 preguntas, por lo que será muy fácil volver atrás y aceptar todas las respuestas correctas. Esto alentará a las personas a responder sus preguntas completamente y sin reservas. –

Respuesta

21

Puede elevar un evento de clic sobre el elemento que se registró la primera función

<script type="text/javascript"> 

    $(function() { 
     $('#searchText').bind('keypress', function(e) { 
      if (e.keyCode == 13) { 
       $('#search').click(); // Raise a click event on #search element 
      } 
     }); 
    }); 
</script> 
+1

+1 para la solución más simple a la pregunta. ¡Gran respuesta! –

1

¿podría darle un nombre? ¿Me estoy perdiendo de algo?

edición: para obtener este derecho

<script type="text/javascript"> 
function() myfunction{ 
    var text = $("#searchText").val(); 
    $.getJSON("Search", { world: text, filter: text }, function(data) { 
     $("tr.DataRow").toggle(false); 
     for (i = 0; i < data.length; i++) { 
      $("#obj" + data[i]).toggle(true); 
     } 
    }); 
} 

$(function(){ 
    $("#search").click(myfunction); 
}); 
</script> 

y luego

<script type="text/javascript"> 

$(function() { 
    $('#searchText').bind('keypress', function(e) { 
     if (e.keyCode == 13) { 
      myfunction(); 
     } 
    }); 
}); 
</script> 
+0

Eso no funcionará. Cuando crea una instancia de una función como parte de una expresión, asignarle un nombre le dará a la función un modo de llamarse de manera recursiva, pero no configurará ese nombre como un atributo del objeto de la ventana (o de cualquier otro objeto). – Pointy

+0

@ RamboNo5 Todo 'myfunction()' está activando el enlace de evento del elemento '# search', no la acción de clic en sí. –

+0

Ok gracias! Edité el código. Ahora debería funcionar como se esperaba, ¿verdad? Sin embargo, su solución es mucho más pulida :) – RamboNo5

12
// first function 
$(function() { 
    $.yourFavoriteFunctionName = function() { 
    // the code for the first function 
    }; 
    $.yourFavoriteFunctionName(); 
}); 

continuación

// second function 
$(function() { 
    // whatever 
    if (foo) 
    $.yourFavoriteFunctionName(); 
20

Extracto de la lógica desde el primer controlador de eventos en una función llamada:

function doSearch() { 
    var text = $("#searchText").val(); 
    $.getJSON("Search", { world: text, filter: text }, function(data) { 
     $("tr.DataRow").toggle(false); 
     for (i = 0; i < data.length; i++) { 
      $("#obj" + data[i]).toggle(true); 
     } 
    }); 
} 

Ahora se puede pasar doSearch por nombrar al controlador de clic:

$(function() { 
     $("#search").click(doSearch); 
    }); 

y explícitamente invocar desde dentro del manejador clave:

$(function() { 
     $('#searchText').bind('keypress', function(e) { 
      if (e.keyCode == 13) { 
       doSearch(); 
      } 
     }); 
    }); 
+0

Esta es la forma correcta de hacerlo – PetersenDidIt

+0

... excepto que ha contaminado el espacio de nombre global en lugar de extender el objeto jQuery. – Pointy

+0

@Pointy: si comienza a tratar el objeto jQuery como un espacio de nombre global de facto, se encontrará con los mismos problemas que hacer que todas sus variables sean globales. ¿Qué sucede cuando escribimos la función 'each()'? – harto

Cuestiones relacionadas