尝试在点击时更改图像

时间:2014-08-18 13:11:37

标签: javascript jquery xhtml

这是我的按钮"我想将图标更改为"打开"并且"关闭"当它再次点击时

<h:panelGroup layout="block" rendered="#{pesquisa}" style="float:left; padding-top:2px;">
            <h:outputLink id="linkToggleControl" value="#">
                <rich:toggleControl event="click" targetPanel="painelFiltro" targetItem="#{filtroBean.activeItem eq 'ativo'? 'vazio' : 'ativo'}" />
                <h:graphicImage id="imagem-pesquisa" value="/resources/images/interface/pesquisa-barra-expandida.png" style="border:none; cursor:pointer;"/>
                <rich:tooltip layout="block" direction="auto">
                    <h:outputText value="#{msg.acsPesquisar}" />
                </rich:tooltip>
            </h:outputLink>
        </h:panelGroup>

脚本:

        <script type="text/javascript">             
            jQuery(function($) {                        
                $('.linkToggleControl').on({
                    'click': function() {
                        var src = ($('#imagem-pesquisa').attr('value') === '/resources/images/interface/pesquisa-barra-expandida.png')
                            ? '/resources/images/interface/pesquisa-barra-expandir.png'
                            : '/resources/images/interface/pesquisa-barra-expandida.png';
                         $('#imagem-pesquisa').attr('value', src);
                    }});         
        </script> 

3 个答案:

答案 0 :(得分:1)

我在Jquery中已经多次做过这种事情,所以我知道这是可能的。 我已经看过你的剧本了,我会做一些不同的事情。但是,我不习惯你正在使用的代码。所以我的建议是如何处理HTML4,xHTML,HTML5。

以下是我的方式:

$(function(){                      
    $('body').on('click','.linkToggleControl', function() {
        var src = ($('#imagem-pesquisa').attr('value') == '/resources/images/interface/pesquisa-barra-expandida.png')? '/resources/images/interface/pesquisa-barra-expandir.png': '/resources/images/interface/pesquisa-barra-expandida.png';
        $('#imagem-pesquisa').attr('src', src);
    });
});

在我使用'body'的地方,我实际上已经使用了.linkToggleControl

的父级

答案 1 :(得分:0)

您似乎正在调用“LinkToggleControl”&#39;元素,虽然这是他的id或类,对吧?你应该使用&#39;#&#39;或&#39;。&#39;名字之前的字符叫他们

所以试试这样:

<script type="text/javascript">
jQuery(function($) {

$('.linkToggleControl').on({
                'click': function() {
                     var src = ($('#imagem-pesquisa').attr('value') === '/resources/images/interface/pesquisa-barra-expandida.png')
                        ? '/resources/images/interface/pesquisa-barra-expandir.png'
                        : '/resources/images/interface/pesquisa-barra-expandida.png';
                     $(this).attr('value', value);
                }
            });         
    </script>   

结帐&#39; linkToggleControl&#39;看他的身份或班级,但&#39; imagem-pesquisa&#39;它绝对错过了#&#39;#&#39;在它之前的char

答案 2 :(得分:0)

您正在使用:   $(this).attr('value', value);

不应该是:$(this).attr('value', src);