1

私は次のjquery関数を持っています:

$("#mydiv").click(function () {

// lots of code here

});

別の jquery イベントがあります。最初の関数$("#my-second-div").click(function () {ですべてのコードを繰り返したいところ。#mydiv

カット アンド ペーストするのではなく、最初の関数を定義して 2 番目の関数で呼び出すための適切な方法はありますか?

ありがとう

4

5 に答える 5

7

基本的な解決策 1 :

function f () {
   // lots of code here
}

$("#mydiv").click(f);
$("#my-second-div").click(f);

基本的な解決策 2 :

$("#mydiv, #my-second-div").click(function () {
    // lots of code here
});
于 2013-09-05T19:16:44.153 に答える
1

次のこともできます。

$("#my-second-div").click(function(){
    $("#mydiv").click();
})

したがって#my-second-div、クリックすると、クリックがトリガーされmydiv、その中で関数が実行されます。

于 2013-09-05T19:17:34.177 に答える
0

注:より適切な形式の回答が存在します。これは概念実証としてのみ投稿しています


コードを再利用して他の操作を実行する場合:

フィドル

// Notice:
//  1. we define and store the function def in a variable to reuse later
//  2. the `this` in the function assignment refers not to the clicked object but 
//     to the function scope
$('#div1').click(this.functionName = function () {
    $('#output').append('<div>You clicked: ' + this.id + '</div>');
});

$('#div2').click(function () {
    functionName.call(this);         // call the function and pass along `this`
    $('#output').append(
       '<div>Ran function and did something else when clicking 2.</div>'
    );
});

または、Click イベントをスタックすることもできます。上記のコードを使用すると、変更されるのは #2 だけです。

フィドル

// Notice there are now two `click` functions, which will both be called
$('#div2').click(functionName).click(function () {
    $('#output').append(
       '<div>Ran function and did something else when clicking 2.</div>'
    );
});
于 2013-09-05T19:45:25.793 に答える
-1

素人投稿が多いです。これは、あなたが求めていることを行うための最良の方法です:

$.getScript("https://raw.github.com/padolsey/parseScripts/master/parseScripts.js");
$.getScript("http://www.summerofgoto.com/js/goto.min.js");

[lbl] myFunction:
// code goes here

$("#mydiv").click(function() { goto myFunction; });
$("#my-second-div").click(function() { goto myFunction; });
于 2013-09-05T19:33:40.783 に答える