2010-03-25 8 views
50

Próbuję wywołać określoną funkcję obsługi w jQuery:użytkownik wywołujący określoną funkcję w jQuery

$(document).ready(function() { 
 
    $('#btnSun').click(function() { 
 
    myFunction(); 
 
    }); 
 
    $.fn.myFunction = function() { 
 
    alert('hi'); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id="btnSun">Say hello!</button>

Próbowałem następujących także:

$(document).ready(function() { 
 
    $('#btnSun').click(function() { 
 
    myFunction(); 
 
    }); 
 
}); 
 

 
function myFunction() { 
 
    alert('hi'); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id="btnSun">Say hello!</button>

Wygląda na to, że nie działa! Każdy pomysł, gdzie się mylę?

+1

Chciałbym zdefiniować to jako ** plugin ** –

+1

tylko uwaga, ponieważ używasz $ .fn.myFunction, w większości przypadków mówisz, że chcesz użyć tej funkcji w ciągu poprawny zawijany obiekt jquery, np. '$ ('twój_html_tag'). myFunction()'. http://jsfiddle.net/H7z8f/ –

Odpowiedz

61

Jeśli chcesz połączyć się z normalną funkcję poprzez zdarzenia jQuery, można zrobić to tak:

$(document).ready(function() { 
 
    $('#btnSun').click(myFunction); 
 
}); 
 

 
function myFunction() { 
 
    alert('hi'); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id="btnSun">Say hello!</button>

+1

Jeśli potrzebujesz niestandardowej funkcji dla obiektu (np. Zmiennej), możesz użyć 'Object.prototype.SayIt = function (s) {return this + s;}; var ramone = 'Hey Ho,'; var s = "Pozwala przejść"; console.log (ramone.SayIt (s)); '. Jeśli masz problemy, użyj 'Object.defineProperty (Object.prototype," SayIt ", {value: function (s) {your stuff here}};; –

+4

@Nick Craver możesz dodać parametry do funkcji definiowania użytkownika, jeśli tak, jak czy użyłbyś go {function myFunction (val1, val2) { // jak byś go użył tutaj }} i jak nazwałbyś tę funkcję ... dzięki – Amjad

+0

To nie działało dla mnie. Rusłana Lópeza Carro działało (poniżej). – alikuli

6

Spróbuj $('div').myFunction();

To powinno działać

$(document).ready(function() { 
$('#btnSun').click(function(){ 
    myFunction(); 
}); 

function myFunction() 
{ 
alert('hi'); 
} 
+0

Czy to znaczy, że nie możemy utworzyć funkcji zdefiniowanej przez użytkownika w Jquery i wywołać tak jak zwykle? – user269867

+0

Hej działa dla mnie $ ("div"). MyFunction(); :-). Gr8 !! Czy możesz mi pomóc zrozumieć to zachowanie? dlaczego potrzebujemy $ ("div"). myFunction() ... dlaczego nie mogę wywołać funkcji myFunction jako normalnej funkcji? – user269867

+0

Przywołujesz go do obiektu jQuery. –

11

Nazywane są wtyczek, jak Jaboc skomentował. Aby mieć sens, funkcja wtyczki powinna zrobić coś z elementem, przez który jest wywoływana. Rozważmy następujący:

jQuery.fn.make_me_red = function() { 
    return this.each(function() { 
     this.style.color = 'red'; 
    }); 
}; 

$('a').make_me_red(); 
3
jQuery.fn.make_me_red = function() { 
    return this.each(function() { 
     this.style.color = 'red'; 
    }); 
}; 

$('a').make_me_red() // - instead of this you can use $(this).make_me_red() instead for better readability. 
28

Spróbuj tego . To zawsze działa.

$(document).ready(function() { 
 
    $('#btnSun').click(function() { 
 
    $.fn.myFunction(); 
 
    }); 
 
    $.fn.myFunction = function() { 
 
    alert('hi'); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id="btnSun">Say hello!</button>

+0

Starałem się marnować czas na jakieś głupie rzeczy. Próbowałem każdy kod, który jest tu wspomnieć, ale nie był w stanie nawet "alert (0);" to. Próbowałem wymyślić rozwiązanie i oto było, naciskałem "F12" i wygląda na to, że mój ** AdBlocker ** blokuje wyświetlanie niektórych treści. Przeczytaj więcej: [** Nie udało się załadować zasobu w chrome google.maps api **] (http://stackoverflow.com/a/34625042/5737774) – fWd82

8

Poniżej znajduje się tuż metoda

$(document).ready(function() { 
    $('#btnSun').click(function(){ 
     $(this).myFunction(); 
    }); 
    $.fn.myFunction = function() { 
     alert('hi'); 
    } 
}); 
0
jQuery.fn.make_me_red = function() { 
    alert($(this).attr('id')); 
    $(this).siblings("#hello").toggle(); 
} 
$("#user_button").click(function(){ 
    //$(this).siblings(".hello").make_me_red(); 
    $(this).make_me_red(); 
    $(this).addClass("active"); 
}); 
​ 

deklaracji funkcji i zwrotna w jQuery.

0
$(document).ready(function() { 
    $('#btnSun').click(function(){ 

     myFunction(); 

    }); 

    $.fn.myFunction = function() { 
    alert('hi'); 

    }; 
}); 

Put "; "po definicji funkcji ...

Powiązane problemy