【问题标题】:Hide upload button when image is present, Show when Image is gone?图片存在时隐藏上传按钮,图片消失时显示?
【发布时间】:2013-07-10 04:26:25
【问题描述】:

这是一个如此简单的问题,但我这辈子无法让我的解决方案发挥作用,我已经摆弄了一段时间,而且有点短,我觉得自己像个白痴。

http://jsfiddle.net/N8pCq/292/

我会直接进入代码

JQuery:

    $('#_moon_static_bg_status').on('change',function(){ 

       var image_status =$('#test').hasClass('static_preview_image'),
           upload_button = $(".moon_upload_button");

            if (image_status){ 
               upload_button.hide(); 
            } else {
               upload_button.show();
            }

    }).trigger('change');

简单地说,我只想根据类 .static_preview_image 是否存在来显示上传按钮,这个类包含图像,当用户关闭图像时,整个 div 被删除,所以我认为调用该类会很好用于显示和隐藏,因为当它不存在时我们显示上传,当显示图像时我们隐藏上传按钮。

HTML:

     <div class="moon_media_status" id="_moon_static_bg_status">

     <input type="button" value="Upload File" class="moon_upload_button button"></input>

     <a rel="_moon_static_bg" class="moon_remove_file_button" href="#">Remove Image</a>

     <div id="test" class="static_preview_image"></div>

     </div>

当单击 .moon_remove_file_button 时,您在其下看到的 .static_preview_image 会被完全删除,当用户上传图像时,带有 .static_preview_image 的 div 会返回,因此我们自然会想要删除该按钮并只显示关闭按钮。 .

回想起来,我可以看到开源 jQuery 是如何删除 .moon_remove_file_button 并复制它的,但是自从我写了这个之后,我想看看我在哪里犯了大脑放屁的错误......

又是小提琴...http://jsfiddle.net/N8pCq/292/

【问题讨论】:

    标签: jquery hide show


    【解决方案1】:

    点击删除按钮触发更改事件,以便重新应用逻辑。

    $('.moon_remove_file_button').click(function(){
        $('#test').removeClass('static_preview_image');
        $('#_moon_static_bg_status').change();
    });
    

    Demo

    【讨论】:

    • 哦,好吧,我的问题是删除按钮功能已经在实时代码中建立(在我的项目中),我把那个代码扔到了小提琴中,所以我的 if else 语句将类似于真实代码,但我发现虽然这确实是我需要的,我也在这个小提琴中添加了一个上传按钮的功能,没什么特别的,但现在我们有完整的功能jsfiddle.net/h7VUV/1
    • 它的简单的东西让我感到沮丧,我仍在努力变得更好,我大约一个月前开始使用 jQuery ......哈利路亚这个网站,让我的工作流程更加轻松......谢谢抓紧时间!
    • @MichaelJosephAubry 欢迎您。 :) 你很快就会到达那里.. :)
    【解决方案2】:

    无需为此使用 javascript,只需使用 CSS 隐藏图像即可。这会稍微改变你的标记,但你也可以使用定位来实现你想要的外观(或使用从右到左的定位来反转顺序。可以找到一个例子here)。

    HTML:

    <div class="moon_media_status" id="_moon_static_bg_status">
        <a rel="_moon_static_bg" class="moon_remove_file_button" href="#">Remove Image</a> 
        <div id="test" class="static_preview_image"></div>
        <input type="button" value="Upload File" class="moon_upload_button button" />
    </div>
    

    Javascript:

    $('.moon_remove_file_button').click(function(){
        $('#test').removeClass('static_preview_image');
    });
    
    $('.moon_upload_button').click(function () {
        $('#test').addClass('static_preview_image');
    });
    

    CSS:

    .static_preview_image {
        height: 500px; 
        width: 500px; 
        background-image: url(http://themes.moonrocketstudio.com/brash/wp-content/uploads/2013/05/bur.jpg);}
    
    .static_preview_image ~ .moon_upload_button{
        display: none;
    }
    

    编辑

    在这里演示:http://jsbin.com/ozades/1/edit

    【讨论】:

    • 嗯,有趣的角度,更简单,背景图片实际上是内联样式,因为我使用 jQuery 根据用户上传的内容添加图片,尽管这个解决方案仍然有效,但无关紧要。
    • 等一下再看一下上传按钮是不是仍然可见?这不是隐藏图像的问题,因为我们在用户关闭图像时删除了该块,然后显示上传按钮,当用户单击选择图像媒体时,我们在隐藏上传按钮的同时再次显示图像
    • 上传按钮保持可见
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 2020-12-27
    • 1970-01-01
    相关资源
    最近更新 更多