0

我需要通过单击父标签来切换两个图像。

这是我的 JavaScript

$("#VerColMenu > li > a").click(function() {
    var src = ($(this).children()[0].attr('src') === 'img/plus.png')
    ? 'img/minus.png'
    : 'img/plus.png';
   $(this).children()[0].attr('src', src);
});

但这里什么也没有发生。

4

4 回答 4

1

attr是 jQuery 方法而不是 DOM 方法,所以你不需要[0]. 尝试这个:

$('#VerColMenu a').click(function(){
  var $img = $(this).children();
  var src = $img.attr('src');
  $img.attr('src', src === 'img/plus.png' ? 'img/minus.png' : 'img/plus.png');
});
于 2012-10-01T04:03:32.210 回答
1

首先.children()[0]
将孩子作为 DOM 对象而不是 jQuery 对象..

并且 .attr() 只能用于 jQuery 对象。

尝试:eq选择器而不是 .children()

 $("#VerColMenu > li > a").click(function() {
      var src = ($(this).find('img:eq(0)').attr('src') === 'img/plus.png')
    ? 'img/minus.png'
    : 'img/plus.png';
   $(this).find('img:eq(0)') .attr('src', src);
}); 

我假设.children()[0] 您的意思是 li 内的第一个图像,因此使用img:eq(0) which 将选择 li 内的第一个图像元素。

于 2012-10-01T04:03:45.970 回答
1

附加[0]到 jQuery 对象会检索底层的 DOM 对象。除了上面/下面的答案,您还可以使用.first()来获取 jQuery 数组集中的第一个元素:

$("#VerColMenu > li > a").click(function() {
    var src = ($(this).children().first().attr('src') === 'img/plus.png') ? 'img/minus.png' : 'img/plus.png';
    $(this).children().first().attr('src', src);
});

演示

这当然必须被包裹$(document).ready()或类似的东西。

于 2012-10-01T04:09:53.743 回答
0

使用此代码它可以帮助你

 function toggle(a) {
        if (isloaded) {
            document.getElementById(a).src=toggleimage[i_image];
        }
        i_image++
        if (i_image>1) {i_image=0}
    }

 <a href="javascript:toggle()"><img name="togglepicture" src="p1.gif" border="0"></a>
于 2012-10-01T05:38:59.683 回答