jqueryで、

以下のように記述すると、
$("ul li").each(function(i){
console.log(i);
});

<ul>
<li></li>
<li></li>
</ul
とあるhtmlでliが2つ取得できますが、
$("ul li a").click(function(){
$(this).parent().each(function(i){
console.log(i);
});
});
とするとliが1つしか取得できません。
後者ですとなぜ1つしかしゅとくできないのでしょうか。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2014/03/20 18:41:34
  • 終了:2014/03/20 20:34:41

ベストアンサー

id:a-kuma3 No.1

a-kuma3回答回数4596ベストアンサー獲得回数19352014/03/20 19:07:58

ポイント100pt
<ul>
<li><a href="...">いちばんめ</a></li>
<li><a href="...">にばんめ</a></li>     <!-- ★ -->
</ul>

となってるところで、以下のようになってた場合。

$("ul li a").click(function(){
    $(this).parent().each(function(i){
        console.log(i);
    });
});

もし、「にばんめ」がクリックされたとしたら、

    $(this).parent().each(function(i){

thisクリックした「にばんめ」とある A タグの要素
$(this)↑の jQuery オブジェクト
$(this).parent()↑の親である LI タグの要素(★をつけたとこの LI )の jQuery オブジェクト

となり、一回だけです。

    $(this).parent().parent().children().each(function(i){

こうなってると、どうでしょうね。

thisクリックした「にばんめ」とある A タグの要素
$(this)↑の jQuery オブジェクト
$(this).parent()↑の親である LI タグの要素(★をつけたとこの LI )の jQuery オブジェクト
$(this).parent().parent()↑の親である UL タグの要素の jQuery オブジェクト
$(this).parent().parent().children()↑の子である LI タグの要素 全ての jQuery オブジェクト

となって、二回取得できます。

id:yayayai

なるほど。。勉強になりました!ありがとうございます!

2014/03/30 16:47:52

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません