0

重複の可能性:
jquery セレクターの親要素を取得する

私はアイテムのリストを持っています:

        <div id="wrap"><ul class="thumbs noscript">
        <li id="1">
        <a class="thumb" href="photos/10-01.jpg" title="" />
        <img src="photos/10-01_thumb.jpg" alt="" />
        </a>
        <div class="caption">
        <div class="download"><a href="#" class="add2cart">Save Image</a></div>
        <div class="image-title">Titre de la photo #1</div>
        <div class="image-desc">Description de la photo #1</div>
        </div>
        </li> /* and so on with li's and different ID's... */

li ID、つまりタイトルの値を取得できません。ここでほぼすべての回答を読んで試しましたが、自分のサイトでテストすると機能しません...何か考えはありますか? TYの皆さん

$(document).ready(function(){
    $("#wrap > ul > li > .caption > .download > .add2cart").click(function(){
        var thisID = $(this).closest('li').attr("id");
        alert(thisID);
    });
});

正解 (下記参照) : insomiac, tyvm また、ID の問題を指摘してくれた Diodeus にも感謝します。答えてくれたすべての人に感謝します;)

4

3 に答える 3

1

「データ」API を使用して値を保存し、クリック時に ID を使用する代わりにその値を取得します。

<li id="img" data-val="1">
            <a class="thumb" href="photos/10-01.jpg" title="" />
            <img src="photos/10-01_thumb.jpg" alt="" />
            </a>
            <div class="caption">
            <div class="download"><a href="#" class="add2cart">Save Image</a></div>
            <div class="image-title">Titre de la photo #1</div>
            <div class="image-desc">Description de la photo #1</div>
            </div>
    </li> /* and so on with li's and different ID's... */

jquery:

    $(document).ready(function(){
        // if you want the value of li, using the child click.
        // Do something like this, if you want the click on "thumb".
        $('.thumb').click(function(e){
             e.preventDefault();
            var val = $(this).closest('li').data('val');
         });

     });

jsfiddleで動作します

js コードを更新します。

$(document).ready(function(){
    $(".add2cart").click(function(e){
        e.preventDefault();
        // Use prop if your jquery version is above 1.6.. 
        var thisID = $(this).closest('li').prop("id");
        alert(thisID);
    });
});

注 : jQuery 1.6 以降、.attr() メソッドは、設定されていない属性に対して undefined を返します。さらに、.attr() は、プレーン オブジェクト、配列、ウィンドウ、またはドキュメントでは使用しないでください。DOM プロパティを取得および変更するには、.prop() メソッドを使用します。

于 2013-01-16T20:51:45.130 に答える
0

.closest も使用できます

$(this).closest('li').attr('id');

これにより、コントロールがさらにネストされた場合に、別の親要素ではなく、実際に li が検出されることが保証されます。

于 2013-01-16T20:51:56.410 に答える
0

特定のケースでは、次を使用できます$(this).parent().attr('id')

$('li a').on('click', function () {
   alert('you clicked a link within a li with id=' + $(this).parent().attr('id')); 
   } 
); 

http://jsfiddle.net/8QZ2s/

于 2013-01-16T20:49:34.763 に答える