вызов функции Jquery из JavaScript - PullRequest
12 голосов
/ 28 августа 2009

Как я могу вызвать функцию jQuery из javascript?

 //jquery
 $(function() {

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

 //just js
 function js_fun () {

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

Ответы [ 8 ]

16 голосов
/ 28 августа 2009

Вы не можете.

function(){

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

Это закрытие. my_fun() определяется только внутри этой анонимной функции. Вы можете позвонить my_fun() только в том случае, если вы объявите это на правильном уровне области, то есть глобально.

$(function () {/* something */}) - это IIFE, что означает, что он выполняется немедленно, когда DOM готов. Объявляя my_fun() внутри этой анонимной функции, вы не позволяете остальной части скрипта «видеть» ее.

Конечно, если вы хотите запустить эту функцию, когда DOM полностью загружен, вы должны сделать следующее:

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

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

// just js
function js_fun(){
   my_fun(); //== call my_fun() again
}
15 голосов
/ 02 февраля 2012

Да, вы можете (вот как я понимаю первоначальный вопрос). Вот как я это сделал. Просто свяжите это с внешним контекстом. Например:

//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
}

Я столкнулся с той же проблемой при попытке получить доступ к методам объекта, который был создан на DOM объект готов только. Работает. Мой пример:

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;
}

теперь вы можете использовать что-то простое, например:

function() = {
   MyCtrl.update(); // yes!
}
11 голосов
/ 03 августа 2012
var jqueryFunction;

$().ready(function(){
    //jQuery function
    jqueryFunction = function( _msg )
    {
        alert( _msg );
    }
})

//javascript function
function jsFunction()
{
    //Invoke jQuery Function
    jqueryFunction("Call from js to jQuery");
}

http://www.designscripting.com/2012/08/call-jquery-function-from-javascript/

5 голосов
/ 04 декабря 2013
    <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>
1 голос
/ 28 августа 2009

Я сделал это ...

Я просто пишу

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

вместо

 document.getElementById('container').innerHTML += html;
1 голос
/ 28 августа 2009

Функции jQuery вызываются так же, как функции JavaScript.

Например, чтобы динамически добавить класс «red» к элементу документа с идентификатором «orderlist», используя функцию jQuery addClass:

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

В отличие от обычной строки JavaScript, вызывающей обычную функцию:

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

addClass () - это функция jQuery, getElementById () - это функция JavaScript.

Функция знака доллара делает доступной функцию jQuery addClass.

Единственное отличие состоит в том, что в примере jQuery вызывается функция addclass объекта jQuery $ ("# orderlist"), а в обычном примере - функция объекта документа.

В вашем коде

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

Используется для указания кода, запускаемого, когда DOM готов.

Он не отличает (как вы можете подумать), что такое «код jQuery» от обычного кода JavaScript.

Итак, чтобы ответить на ваш вопрос, просто вызовите функции, которые вы определили, как обычно.

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

//call the function you defined:
myfun();
0 голосов
/ 09 мая 2013

// функция javascript, вызывающая функцию jquery

// В части JavaScript

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);  
}

// В части Jquery

jQuery(function(){ 
//Jq Score function     
    function show_score()
    {   
        $('#score').val("10");
    }
});(jQuery); 
0 голосов
/ 28 августа 2009

Моя проблема заключалась в том, что я смотрел на него под длинным углом:

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++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...