Javascript/jQuery 在单击时更改 CSS 不起作用

标签 javascript jquery html css

我正在尝试制作三个不同的按钮,使用 CSS 显示属性在三个不同的图像之间切换(这样所有图像都会在网页加载时加载)。但是,它不起作用,我不知道我的代码有什么问题。

https://jsfiddle.net/agt559e8/ -- 我的代码

function USradarChange1() {
    //document.getElementById("usradar1").src="weather/current-usradar.gif";
    $('#USradarChangeButton1').click(function() {
        $('#usradar1').css({ 'display': 'inline' });
        $('#usradar2').css({ 'display': 'none' });
        $('#usradar3').css({ 'display': 'none' });
    });
}

function USradarChange2() {
    //document.getElementById("usradar2").src="weather/usradar-an12hour.gif";
    $('#USradarChangeButton2').click(function() {
        $('#usradar1').css({ 'display': 'none' });
        $('#usradar2').css({ 'display': 'inline' });
        $('#usradar3').css({ 'display': 'none' });
    });
}

function USradarChange3() {
    //document.getElementById("usradar3").src="weather/usradar-an7day.gif";
    $('#USradarChangeButton3').click(function() {
        $('#usradar1').css({ 'display': 'none' });
        $('#usradar2').css({ 'display': 'none' });
        $('#usradar3').css({ 'display': 'inline' });
    });
}
<div class="button-container">
    <a class="button" id="USradarChangeButton1">Current US Radar</a>
    <a class="button" id="USradarChangeButton2">US Radar 12 Hours</a>
    <a class="button" id="USradarChangeButton3">US Radar 7 Days</a>
</div>

<div id="imgcontainer">
    <img class="radar-img" id="usradar1" src="weather/current-usradar.gif" alt="Current US Radar">
    <img class="radar-img" id="usradar2" src="weather/usradar-an7day.gif" alt="Current US Radar">
    <img class="radar-img" id="usradar3" src="weather/usradar-an12hour.gif" alt="Current US Radar">
</div>

有什么想法吗?

最佳答案

您的代码存在几个问题。首先,您定义了一些从未被调用的函数,因此它们中的事件 Hook 永远不会被绑定(bind),存在不匹配的大括号,并且您的 fiddle 不包含 jQuery 本身。

抛开这些问题不谈,您的代码可以通过使用 DRY 原则来改进。试试这个:

<div class="button-container"> 
    <a class="button" id="USradarChangeButton1" href="#usradar1">Current US Radar</a>
    <a class="button" id="USradarChangeButton2" href="#usradar2">US Radar 12 Hours</a>
    <a class="button" id="USradarChangeButton3" href="#usradar3">US Radar 7 Days</a>
</div>

<div id="img-container">
    <img class="radar-img" id="usradar1" src="http://trendting.com/wp-content/uploads/2014/05/giphy-225.gif" alt="Current US Radar" />
    <img class="radar-img" id="usradar2" src="https://media3.giphy.com/media/H3MXq3XT4z2ec/200_s.gif" alt="US Radar 12 Hours" />
    <img class="radar-img" id="usradar3" src="http://media.giphy.com/media/10Ocy3t9qoSOwE/giphy.gif" alt="US Radar 7 Days" />
</div>
$(function() {
    $('.button').click(function(e) {
        e.preventDefault();
        $('#img-container img').hide();
        $($(this).attr('href')).show();
    });
});

Example fiddle

请注意,此单个 click 处理程序现在适用于所有 .button 元素,因为它们现在通过 href 属性。

关于Javascript/jQuery 在单击时更改 CSS 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31191377/

相关文章:

javascript - 如何在 fancybox 中获取当前图像索引?

javascript - PHP 5.5 通过 PDO 到 SQL Server,如何将行内容传递回 JavaScript jQuery Ajax 调用

javascript - 无法修复网页上的 VBA 爬网错误

php - 标签打印机的 CSS

javascript - 触发一个适用于所有浏览器的新选项卡

javascript - 如何使用bind传递对next()的引用?

javascript - javascript/正则表达式中的字符串匹配

javascript - 有没有我可以重载的方法来处理 JavaScript 中未定义的属性?

jquery - Bootstrap 需要 JQuery(使用 Express 和 Parse)

javascript - 为什么 jQuery 的 .animate() 在完成动画之前运行 "complete"函数?