2011-01-07 6 views
1

アンカータグの横にチェックボックスがある場合、チェックボックスをクリックするとjQueryを使用してアンカータグのhref値を表示する方法を教えてください。私は、リンク7 OTOの横のチェックボックスをクリックした場合例えばチェックボックスとアンカータグを使用したjquery

<div><input type="checkbox"><a href="http://link0">link 0</a></div> 
<div><input type="checkbox"><a href="http://link1">link 1</a></div> 
<div><input type="checkbox"><a href="http://link2">link 2</a></div> 
<div><input type="checkbox"><a href="http://link3">link 3</a></div> 
<div><input type="checkbox"><a href="http://link4">link 4</a></div> 
<div><input type="checkbox"><a href="http://link5">link 5</a></div> 
<div><input type="checkbox"><a href="http://link6">link 6</a></div> 
<div><input type="checkbox"><a href="http://link7">link 7</a></div> 
<div><input type="checkbox"><a href="http://link8">link 8</a></div> 
<div><input type="checkbox"><a href="http://link9">link 9</a></div> 

、それはそうで

http://link7 

とを私に警告しなければなりません。このよう

+2

関連性のない提案:「」要素をクローズする必要があります。 –

答えて

5

$(':checkbox').click(function() { 
    alert($(this).nextAll('a:first').attr('href')); 
}); 

EDIT:説明:

  • :checkbox selectorは、すべてのチェックボックスを選択します。
  • $(this).nextAll('a:first')<a>の要素は、thisの後ろに他の要素があっても見つかるでしょう。
    対照的に、$(this).next('a') will only return the next element if it's an `;間に何かがある場合、何も返されません。このようなチェックボックスにクラスを追加することにより、
+0

なぜこれはVincent Ramdhanieの提案よりも優れていますか? – oshirowanen

+1

'nextAll(' a:first ')'を実行する目的は何ですか?あなたはちょうど次の( ')'をすることはできませんか? – JasCav

+1

@oshirowanen - クラスを使用してチェックボックスを選択する必要はありません(Vincentの答えはそれを必要とします)。しかし、あなたがVincentの答えを使用したい理由があります(彼の答えに私のコメントを見てください)。 – JasCav

1

スタート:

<input class="chkbox" type="checkbox"/> 

は、その後、あなたはこのような何かを行うことができます。

$(".chkbox").click(function(){ 
     alert($(this).next("a").attr("href")); 
    }); 
+1

@oshirowanen - これを動作させるためにクラスを追加する必要はありません(SLaksの答えを参照)。ただし、この機能を使用したくない他のチェックボックスがページにある場合は、役立ちます。 – JasCav

+0

これはSLaksの提案を使用するよりもなぜ優れていますか? – oshirowanen

+1

@oshirowanen両方の答えは非常によく似ていて、私はどちらかというと他のものより優れているとは思わない。これは、同じアイデアを持つ2人の人が同時に入力したときに発生することがあります。 –

0

これはトリックを行う必要があり

$('checkbox').click(function() { 
    var ref =$(this).next().attr('href') 
    alert(ref); 
    } 
0
$(document).ready(function(){ 
    $('input[type="checkbox"]').click(function(){ 
     if($(this).attr('checked')){ 
      window.location = '#' + $(this).next('a').attr('href'); 
     } 
    }); 

}); 
2
あなたはすでに良い答えの多くを得て、しかし、ここで私はそれを行うだろうかだきました

:一人で:checkboxセレクタを使用して

$("input:checkbox").click(function(){ 
    alert($(this).next()[0].href); 
}); 

*:[type="checkbox"]と同じである*:checkboxをやってと同じであり、そして、あなたはしたくありませんDOMのすべての要素のtype属性をチェックします。 jQueryのからも

は、およそ 属性を取得するために、できるだけ頻繁にネイティブメソッドを使用して、より、私の助言を行う、以下を書き、すべてで、それはより少ないコードを意味し、ほんの少し高速です(しかし、それは本当にnegibleです)。

アンカー要素がチェックボックスの直下の兄弟である場合は、.next()[0]を使用します。それ以外の場合は.nextAll("a:first")[0]を使用します。

関連する問題