0

私はこれを理解しようとして過去1時間を費やしましたが、正しく理解できないようです。jQueryの学習を始めたばかりですが、この問題の解決策に近づいていると感じています。

私は2つの部門を持っています。

HTML

<div class="fl person"> 
     <input type="hidden" name="userSaved" id="userSaved" value="1" /> 
     <img src="..." class="circle-mask" /> 
</div>

<div class="fl person"> 
     <input type="hidden" name="userSaved" id="userSaved" value="2" /> 
     <img src="..." class="circle-mask" /> 
</div>

div/image がクリックされたときに、非表示の値を取得できるようにしたいと考えています (このすべての外にフォームがあります。これは、より多くのスペースを占有するため、含めませんでした)。画像をクリックすると、その div が非表示になります。値の私のjQueryはかなりずれています。私はそれを持っていたので、値を取得しましたが、最初のdivからのみ、divがクリックされた非表示の入力の値を表示するように取得できないようです。

jQuery

<script>
$("div.person img").click(function () {    
    $(this).hide(500, function () {
        var $hidden = $('input#userSaved');
        alert($hidden.val());
        $(this).parent("div").empty();
        $(".main_page").appendTo("div.main_page").addClass("fl person"); 
    });
});
</script>

また、関数の外で $hidden にアクセスするにはどうすればよいですか?

4

2 に答える 2

2

siblings()関数を使用します。

var $hidden = $(this).siblings('input');

prev()も機能します:

var $hidden = $(this).prev();

補足: コードには同じ ID を持つ複数の要素が含まれていますが、これは無効です。それを変更する必要があります。

変更部分を簡略化して編集。

于 2013-07-18T17:23:22.927 に答える
0

これでトラバースすることもできます:

 var $hidden = $(this).parent('div').find('input:hidden');

また

var $hidden = $(this).prev();

デモ

注: ID は一意である必要があります。重複する ID は使用しないでください

于 2013-07-18T17:25:18.793 に答える