简体   繁体   English

切换图片在jQuery中不起作用

[英]Toggle image not working in jquery

what i need 我需要的

  • i need to toggle image onclick of event. 我需要切换事件的图像onclick。
  • like stack overflow star similar case. 像堆栈溢出之星类似的情况。

html html

 <span itemprop="location"  itemscope itemtype="http://schema.org/Place">
            <div  style="display:block; float:right; width:auto; color:#7c7c7c;">


      <a href="javascript:void(0);" src="http://im.gifbt.com/images/star1_phone.png" class="favourate_dextop" id="fav'.$data[$k]['id'].'"  onClick=" favaorite(this)"></a>
                             </div>'

js code js代码

function favorite(pointer)
        {
        $(".favourate_dextop").click(function(){
        if($(".favourate_dextop").attr("src") == "http://im.gifbt.com/images/star1_phone.png"){
        //$(pointer).closest('.evt_date').find('.favourate_dextop').attr("src", "http://im.gifbt.com/images/star1_phonehover.png");

        $(pointer).closest('.evt_date').find('.favourate_dextop').css('background-image', 'url("' + imageUrl + '")');
        alert("if");
        }
        else 
        {

        //$(pointer).closest('.evt_date').find('.favourate_dextop').attr("src", "http://im.gifbt.com/images/star1_phone.png");

        $(pointer).closest('.evt_date').find('.favourate_dextop').css('background-image', 'url("' + imageUrls + '")');

        }
        });

}

problem 问题

  • i need to toggle image on click of function fav(). 我需要点击函数fav()来切换图像。
  • problem im facing i searched google though i found toggleclass though its not working in case. 我面临的问题是我搜索了google,尽管我发现toggleclass却无法正常工作。

  • i found helpfull code 我发现有用的代码

      // in CSS .favourate_dextop{ background: url("http://im.gifbt.com/images/star1_phone.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0); display: block; float: right; height: 19px; width: 18px; } .favourate_dextop:hover{ background: url("http://im.gifbt.com/images/star1_phonehover.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0);} .favourate_dextops{ background: url("http://im.gifbt.com/images/star1_phone.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0); display: block; float: right; height: 19px; width: 18px; } .favourate_dextops:hover{ background: url("http://im.gifbt.com/images/star1_phonehover.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0);} // in JS // based on value of imageUrl, determine what class to remove and what class to add. $(pointer).closest('.evt_date').find('.favourate_dextop').removeClass('favourate_dextop').addClass('favourate_dextops'); 
  • this code is also not working. 此代码也不起作用。

  • only this code works onetime when click on image changes background image only once, nut i need to toggle image urls. 仅此代码一次有效,当单击图像仅更改背景图像一次时,我需要切换图像URL。

updated code 更新的代码

   <div class="evt_date"  style="overflow:hidden" style="overflow:hidden" itemscope itemtype="http://schema.org/Event">

<a href="javascript:void(0);"  class="favourate_dextop" id="fav'.$data[$k]['id'].'"  onClick=" favaorite('.$data[$k]['id'].',\''.$name_event.'\',\''.$event_city.'\',\''.$event_country.'\',\''.$event_urls.'\',this)"></a>

js code js代码

       var  image2='http://im.gifbt.com/images/star1_phonehover.png';
       var  image1='http://im.gifbt.com/images/star1_phone.png';

       var toggle = 1;


      $('.favourate_dextop').click(function(){

       if (toggle == 1) 
       {
        alert("toggle 1");
           $('.favourate_dextop').css('background-image', 'url("' + image2 + '")');

       //$("#bg").attr('src',image2);
       toggle = 0;
       }
else {
     alert("toggle 0");
                           $('.favourate_dextop').find('.favourate_dextop').css('background-image', 'url("' + image1 + '")');

       //$("#bg").attr('src',image1);
       toggle = 1;
       }

}); });

problem im facing: 我面临的问题:

  • toggling from href is not working. 从href切换不起作用。

js fiddle: i have updted my fiddle : some changes : http://jsfiddle.net/48Lq3u60/20/ js小提琴:我更新了小提琴:一些更改: http : //jsfiddle.net/48Lq3u60/20/

First of all you must improve your code.... 首先,您必须改进代码。

To toggle image use: 要切换图像,请使用:

$("#yourImage").attr('src', 'newlink');

Check a working example here 在这里查看工作示例

Using this as example you can toggle image like this: 以这个为例,您可以像这样切换图像:

NEW FIDDLE 新产品

Your best bet is to simplify things a bit. 最好的选择是简化一些操作。 Try something like this: 尝试这样的事情:

HTML (not that your span is now a div...you shouldn't have spans wrapped around divs as that is bad syntax): HTML(不是您的span现在是一个div ...您应该不要在div周围包裹span,因为这是错误的语法):

<div itemprop="location"  itemscope itemtype="http://schema.org/Place">
    <div class="img-wrap img1">
        <div class="img-swap"></div>
    </div>
</div>

CSS: CSS:

.img-wrap {
    display: block;
    float: right;
    width: auto;
    color: #7c7c7c;
}
.img-swap {
    float: left;
    width: ENTER WIDTH OF IMAGE;
    height: ENTER HEIGHT OF IMAGE;
    background-position: 0 0;
    background-repeat: no-repeat;
}
.img-swap.img1 {
    background-image: url('pathtoimage1');
}
.img-swap.img2 {
    background-image: url('pathtoimage2');
}

jQuery: jQuery的:

jQuery('.img-wrap').click(function() { 
  jQuery(this).children('.img-swap').toggleClass('img1 img2');
});

You'll need to swap out the image paths and enter height and width for your container, but this probably a simpler approach and a bit cleaner. 您需要换出图像路径并为容器输入高度和宽度,但这可能是一种更简单的方法,并且更干净。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM