jQuery – 仅针对单击的元素进行更改,而不是所有具有相同类的更改

我想要做的是更改对象的属性,但仅限于那个。 对于已经点击的那个,有点像$('.up img').attr("src","img/up.png") ,而不是所有带有.up img的元素。

jQuery的:

 $('.up img').click( function(){ var postDataUp = $(this).attr('mod'); $.post('/votePost.php', {varUp: postDataUp}, function(o){ console.log(o); if(o == 1){ $('.up img').attr("src","img/up.png"); }else if(o == 2){ $('.up img').attr("src","img/up-g.png"); $('.down img').attr("src","img/dw.png"); }else if(o == 3){ $('.up img').attr("src","img/up.png"); } }, 'json'); }); 

使用$(this)来仅定位单击该类的特定元素,而不是使用类选择器。

 $('.up img').click( function(){ var postDataUp = $(this).attr('mod'); $.post('/votePost.php', {varUp: postDataUp}, function(o){ console.log(o); if(o == 1){ $(this).attr("src","img/up.png"); }else if(o == 2){ $(this).attr("src","img/up-g.png"); $('.down img').attr("src","img/dw.png"); }else if(o == 3){ $(this).attr("src","img/up.png"); } }, 'json'); }); 

您可以更改代码以定位特定元素。

 $('.up img').click( function(){ var postDataUp = $(this).attr('mod'); // get the specific element that you have clicked. // i use the $ before the name to easily identify jquery elements. var $elm = $(this); $.post('/votePost.php', {varUp: postDataUp}, function(o){ console.log(o); if(o == 1){ // targeting the specific element $elm.attr("src","img/up.png"); }else if(o == 2){ // targeting the specific element $elm.attr("src","img/up-g.png"); $('.down img').attr("src","img/dw.png"); // not sure if you want to target individual element here? }else if(o == 3){ // targeting the specific element $elm.attr("src","img/up.png"); } }, 'json'); }); 

如果您要定位特定于所单击元素的$('.down img') ,那么您可以使用$elm元素然后遍历DOM节点。

试试这个 –

 $('.up img').click( function(){ var postDataUp = $(this).attr('mod'); var clicked = $(this); $.post('/votePost.php', {varUp: postDataUp}, function(o){ console.log(o); if(o == 1){ $(clicked).attr("src","img/up.png"); }else if(o == 2){ $(clicked).attr("src","img/up-g.png"); $('.down img').attr("src","img/dw.png"); }else if(o == 3){ $(clicked).attr("src","img/up.png"); } }, 'json'); }); 
 $('.up img').click( function(){ var $this=$(this); var postDataUp = $this.attr('mod'); $.post('/votePost.php', {varUp: postDataUp}, function(o){ console.log(o); if(o == 1){ $this.attr("src","img/up.png"); }else if(o == 2){ $this.attr("src","img/up-g.png"); $this.attr("src","img/dw.png"); }else if(o == 3){ $this.attr("src","img/up.png"); } }, 'json'); });