2017-03-02 4 views
2

現在、入力の直後にdivを表示/非表示にするスクリプトを作成しようとしています。現時点では、すべての単一の入力とすべての単一のdivをIDでターゲティングしています(入力位置に対してdivをターゲットにするのではなく、少し重いかもしれません)。JQueryのボタンを基準にdivをターゲットにする方法

だから、今、それは少し次のようになります。上の

jQuery(document).ready(function(){ 
    jQuery('#inputbutton1').on('click', function(event) {   
     jQuery('#divtarget1').toggle('show'); 
    }); 
}); 

jQuery(document).ready(function(){ 
    jQuery('#inputbutton2').on('click', function(event) {   
     jQuery('#divtarget2').toggle('show'); 
    }); 
}); 

ので。私は、イベントのターゲットを取ることができ、そこから、その入力ボタンへのの相対に到達する方法がありますか?そのように、ユニークなIDセレクタを持つ30個のスクリプトではなく、可変の値を持つ単一のスクリプトを使用します。各入力ボタン/ divのコンボは以下のように(彼らがページ点在しているが、常にペアで来る。)来る:事前に

<div class="hideshowdiv"><input class="hideshowbtn" type='button' id='inputbutton1' value='Hide/Show Image'></div> 
<div id="divtarget1" class="spellimg"><img src="image.jpg" alt="Image"></div> 

感謝。

答えて

1

次のコードを使用してください。これは柔軟性があり、追加するすべての新しい画像に対して機能します。

$(document).ready(function() { 
 
    $('input').on('click', function(event) { 
 
    $(this).parent().next().toggle('show'); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="hideshowdiv"> 
 
    <input class="hideshowbtn" type='button' id='inputbutton1' value='Hide/Show Image'> 
 
</div> 
 
<div id="divtarget1" class="spellimg"> 
 
    <img src="image.jpg" alt="Image"> 
 
</div> 
 

 
<div class="hideshowdiv"> 
 
    <input class="hideshowbtn" type='button' id='inputbutton1' value='Hide/Show Image'> 
 
</div> 
 
<div id="divtarget1" class="spellimg"> 
 
    <img src="image.jpg" alt="Image"> 
 
</div> 
 

 
<div class="hideshowdiv"> 
 
    <input class="hideshowbtn" type='button' id='inputbutton1' value='Hide/Show Image'> 
 
</div> 
 
<div id="divtarget1" class="spellimg"> 
 
    <img src="image.jpg" alt="Image"> 
 
</div>

+1

ありがとう!これは完全に機能しました。私はevent.targetを使用しようとしていましたが、まったく動作しませんでした。私は "this"がクリックされた要素を対象としているとは考えていませんでした。 – Kleinaroo

+0

@Kleinaroo聞いてよかったです:) –

+0

これは、(ページに他の入力がある場合に)これが起こりたい入力の特定のタイプにクラスを追加することができます。 – tenor528

関連する問題