0

まず第一に、私の弱い英語の言い訳として、次の JavaScript コードを使用しようとしています。id 変数を返し、それを他の関数で使用したいのですが、正しく機能せず、それを返さないようです。誰かが私を書いて助けてくれますかこれ

var idcb = $('.box').click(function() {
    var id = $(this).attr('id');
    return id;
});

この関数で var idcb を使用したい:

$(".hs").click(function() {    
    $(idhs).slideToggle("slow");
        return false;
    });
});
4

8 に答える 8

2

それが機能するためには、jquery のclick実装は、渡された関数が値を返し、それ自体がその値を返す必要があることを知る必要がありますが、そうではありません。

代わりに、クロージャー マジックを使用してこれを簡単に行うことができます。これを試して:

var idcb;
$('.box').click(function() {
    idcb = $(this).attr('id');
});
于 2013-08-01T17:49:10.727 に答える
0

あなたの変数idcbにはクリックハンドラが含まれています!

これを機能させるには、ハンドラーの外側で vriable を宣言し、内側でそれに割り当てる必要があります。

 var idcb = null;

 // ... whatever
 $('.box').click(function() {
     idcb = $(this).attr('id');

     return true; // return 'true' from an event handler to indicate successful completion
 });
于 2013-08-01T17:50:47.720 に答える
0

この関数はクリック関数のパラメーターとして指定され、ユーザーが要素をクリックすると非同期で実行されます。関数はすぐには実行されないため、値を直接返すことはできません。id 値を別の方法で検索するか、それを返す代わりに関数に渡して操作するか、または単にこれを行うことができます。

var idcb = $('.box').click(function() {

   var id = $(this).attr('id');

   $(id).slideToggle("slow");
});
于 2013-08-01T17:48:46.243 に答える
0

これをチェックしてください

var id=null;
$('.box').click(function() {
    id = $(this).attr("id");
});

$(".hs").click(function() {
    $("#"+id).slideToggle("slow");
    return false;
});
于 2013-08-01T17:52:03.583 に答える
0

クリック関数への参照としてオブジェクトを渡し、コールバックから値を変更できます。もう 1 つのオプションは、クロージャーを使用することです。この jsfiddle の注意点は、最初に .box 要素を呼び出す必要があることです。

http://jsfiddle.net/D6B73/2/

var idcb = {};
$('.box').click(idcb, function (event) {
        event.data.value = $(this).attr('id');
        console.log(idcb.value);
 });

$('.hs').click(function() {    
   $('#'+idbc.value).slideToggle("slow");  
});
于 2013-08-01T17:59:28.003 に答える
0

あなたがしようとしている方法でそれを行うことはできません。ただし、できることは、両方の関数からアクセスできる変数を使用して、それらの間で値を共有することです。

var icdb = 'test';

function a() {
    icdb = 'another value';
}

function b() {
    console.log(icdb);
}

a();
b();

bfromを呼び出してa、変数を引数として渡すこともできます。

function a() {
    b('test');
}

function b(icdb) {
    console.log(icdb);
}

a();
于 2013-08-01T17:49:51.397 に答える
-1

次の方法で実行できます。

$(".hs").on('click', function() {
   var id = $('.box').attr('id');
   alert(id);
});
于 2013-08-01T17:49:17.527 に答える