0

それぞれリンクと画像を含むリストがあります。一部の画像には、他の画像にはないクラスがあります。

<ul>
  <li>
    <a>link 1</a>
    <img src="http://foo.com/" />
  </li>
  <li>
    <a>link 2</a>
    <img src="http://foo.com/" />
  </li>
  <li>
    <a>link 3</a>
    <img src="http://foo.com/" class="myClass" />
  </li>
</ul>

これらのリンクにカーソルを合わせて何かをしたいのですが、関連する画像にそのクラスがある場合に限ります。

これは私が現在試していることです:

$('ul li a').hover(
    function() {
        if ($(this).siblings('img').hasClass('.myClass')) {
                console.log('it has the class');
        }
});

これの正しい構文は何ですか?

4

1 に答える 1

5

.メソッドに渡してはいけませんhasClass。削除してください。

if ($(this).siblings('img').hasClass('myClass')) {

クラスが動的に追加/削除されない場合は、.filter()メソッドを使用することもできます:

$('ul li a').filter(function() {
    // return $(this).siblings('img').hasClass('myClass');
    return this.nextElementSibling.className.indexOf('myClass') > -1;
}).hover(function(){
    // ...
});

または+ adjacent selector

于 2013-09-15T20:06:46.223 に答える