2009-08-28 22 views
9

¿Cómo puedo llamar a una función jQuery desde javascript?llamando a la función Jquery desde javascript

//jquery 
$(function() { 

     function my_fun(){ 
       /.. some operations ../ 
     } 
}); 

//just js 
function js_fun() { 

     my_fun(); //== call jquery function 
} 
+1

Sólo llama? ¿En qué específicamente estás teniendo problemas? –

+0

¿Está tratando de crear un complemento de jQuery, es decir, que desea que su función esté disponible como $ (foo) .your_function()? – JorenB

+5

Está empeorando cada vez más esta cosa de jQuery contra JavaScript. –

Respuesta

14

No puede.

function(){ 

    function my_fun(){ 
      /.. some operations ../ 
    } 
} 

Eso es un cierre. my_fun() se define solo dentro de esa función anónima. Solo puede llamar al my_fun() si lo declara en el nivel correcto de alcance, es decir, globalmente.

$(function() {/* something */}) es un IIFE, lo que significa que se ejecuta inmediatamente cuando el DOM está listo. Al declarar my_fun() dentro de esa función anónima, evita que el resto del script "lo vea".

Por supuesto, si desea ejecutar esta función cuando el DOM se haya cargado por completo, usted debe hacer lo siguiente:

function my_fun(){ 
    /* some operations */ 
} 

$(function(){ 
    my_fun(); //run my_fun() ondomready 
}); 

// just js 
function js_fun(){ 
    my_fun(); //== call my_fun() again 
} 
+0

¿podría decirme cómo declarar la función global en jquery? Si tiene algunos ejemplos, sería maravilloso. –

+2

En realidad te he mostrado un ejemplo. jQuery es una parte de Javascript. En Javascript definimos funciones globales como en mi ejemplo (primera función declarada globalmente). –

+0

No funciona – Imran

1

funciones de jQuery se llaman igual que las funciones de JavaScript.

Por ejemplo, para añadir dinámicamente la clase "roja" para el elemento de documento con el "orderedlist" Identificación del uso de la función jQuery addClass:

$("#orderedlist").addClass("red"); 

A diferencia de una línea regular de JavaScript llamando a una función regular :

var x = document.getElementById("orderedlist"); 

addClass() es una función de jQuery, getElemenById() es una función de JavaScript.

La función de signo de dólar hace que la función jQuery addClass esté disponible.

La única diferencia es que el ejemplo de jQuery llama a la función addclass del objeto jQuery $ ("# orderedlist") y el ejemplo regular invoca una función del objeto del documento.

En su código

$(function() { 
// code to execute when the DOM is ready 
}); 

se utiliza para especificar el código a ejecutar cuando el DOM está listo.

No diferencia (como usted puede pensar) qué es el "código jQuery" del código JavaScript normal.

Por lo tanto, para responder a su pregunta, simplemente llame a las funciones que definió como lo haría normalmente.

//create a function 
function my_fun(){ 
    // call a jQuery function: 
    $("#orderedlist").addClass("red"); 
} 

//call the function you defined: 
myfun(); 
0

Mi problema era que yo estaba mirando desde el ángulo de largo:

function new_line() { 
    var html= '<div><br><input type="text" value="" id="dateP_'+ i +'"></div>'; 
    document.getElementById("container").innerHTML += html; 

    $('#dateP_'+i).datepicker({ 
     showOn: 'button', 
     buttonImage: 'calendar.gif', 
     buttonImageOnly: true 
    }); 
    i++; 
} 
0

me hizo ...

acabo de escribir

jQuery('#container').append(html) 

lugar

document.getElementById('container').innerHTML += html; 
12

Sí se puede (así es como yo entiendo la pregunta original). Así es como lo hice. Simplemente átalo al contexto exterior. Por ejemplo:

//javascript 

my_function = null; 

//jquery 
$(function() { 

     function my_fun(){ 
       /.. some operations ../ 
     } 
     my_function = my_fun; 
}) 

//just js 
function js_fun() { 
     my_function(); //== call jquery function - just Reference is globally defined not function itself 
} 

me encontré con este mismo problema cuando se trata de métodos de acceso del objeto, que se crea una instancia en DOM objeto lista única. Trabajos. Mi ejemplo:

MyControl.prototype = { 
    init: function { 
     // init something 
    } 
    update: function() { 
      // something useful, like updating the list items of control or etc.   
    } 
} 

MyCtrl = null; 

// create jquery plug-in 
$.fn.aControl = function() { 
    var control = new MyControl(this); 
    control.init(); 
    MyCtrl = control; // here is the trick 
    return control; 
} 

Ahora puede utilizar algo tan simple como:

function() = { 
    MyCtrl.update(); // yes! 
} 
0

// función javascript llamar a una función jQuery

// En Javascript parte

function js_show_score() 
{ 
    //we use so many javascript library, So please use 'jQuery' avoid '$' 
    jQuery(function(){ 
     //Call any jquery function 
     show_score(); //jquery function 
    });(jQuery); 
} 

// En Jquery parte

jQuery(function(){ 
//Jq Score function  
    function show_score() 
    { 
     $('#score').val("10"); 
    } 
});(jQuery); 
3
<script> 

     // Instantiate your javascript function 
     niceJavascriptRoutine = null; 

     // Begin jQuery 
     $(document).ready(function() { 

      // Your jQuery function 
      function niceJqueryRoutine() { 
       // some code 
      } 
      // Point the javascript function to the jQuery function 
      niceJavaScriptRoutine = niceJueryRoutine; 

     }); 

    </script> 
+0

Agradable y fácil. Gracias hombre –

+0

si llamo niceJavascriptRoutine() obtengo el error - 'niceJavascriptRoutine no es una función' :( – Atara

Cuestiones relacionadas