javascript - 使用 Jquery 显示下拉列表中的链接的更简单方法

标签 javascript jquery html iframe

这是我第一次尝试 JQuery,我正在使用来自 http://www.timeanddate.com 的嵌入式 iframe 构建世界时钟。 - 这个概念是用户从下拉列表中选择城市,它将显示该城市的正确时间

<div>
        <select>
<option value="n136" selected>London</option>
<option value="n240">Sydney</option>
<option value="n179">New York City</option>
        </select>
</div>
<div class ="n136 time"><iframe src="https://freesecure.timeanddate.com/clock/i50ppgou/n136/tluk/fcf90/tct/pct/ftb/bo2/pa10/th1" frameborder="0" width="80" height="38" allowTransparency="true"></iframe></div>
<div class ="n240 time"><iframe src="https://freesecure.timeanddate.com/clock/i50ppgou/n240/tluk/fcf90/tct/pct/ftb/bo2/pa10/th1" frameborder="0" width="80" height="38" allowTransparency="true"></iframe></div>
<div class ="n179 time"><iframe src="https://freesecure.timeanddate.com/clock/i50ppgou/n179/tluk/fcf90/tct/pct/ftb/bo2/pa10/th1" frameborder="0" width="80" height="38" allowTransparency="true"></iframe></div>

JQuery

$(document).ready(function() {
  $("select").change(function() {
    $(this).find("option:selected").each(function() {
      if ($(this).attr("value") == "n136") {
        $(".time").not(".n136").hide();
        $(".n136").show();
      } else if ($(this).attr("value") == "n240") {
        $(".time").not(".n240").hide();
        $(".n240").show();
      } else if ($(this).attr("value") == "n179") {
        $(".time").not(".n179").hide();
        $(".n179").show();
      } else {
        $(".time").hide();
      }
    });
  }).change();
});

它有效。 FIDDLE

问题是我还有 10 个世界时间要添加,这将成为一个非常大的脚本,将加载 13 个世界时间,隐藏 12 个,这似乎是非常糟糕的做法,我认为如果只有一个 IFrame 可以大大改进加载后,然后当用户从下拉列表中选择一个城市时,Iframe URL 的值更改部分(就好像 n*** 数字是一个变量)到 div 类,因为它们中的每一个都是每个的正确代码城市。这样会更有效率。

enter image description here

然而,我似乎已经达到了 JQuery 的极限,如果有人可以帮助我,甚至让我开始,我将不胜感激。

最佳答案

在选择器中使用关键字 this 并更改一个 iframe 的 src:

HTML:

<div>
    <select>
        <option value="n136" selected>London</option>
        <option value="n240">Sydney</option>
        <option value="n179">New York City</option>
    </select>
</div>
<div class="n136 time">
    <iframe src="https://freesecure.timeanddate.com/clock/i50ppgou/n136/tluk/fcf90/tct/pct/ftb/bo2/pa10/th1" id="timeDisplay" frameborder="0" width="80" height="38" allowTransparency="true"></iframe>
</div>

JS:

$(document).ready(function() {
    $("select").change(function() {
        $("#timeDisplay")[0].src = "https://freesecure.timeanddate.com/clock/i50ppgou/" + $(this).attr("value") + "/tluk/fcf90/tct/pct/ftb/bo2/pa10/th1";
    }).change();
});

fiddle :http://jsfiddle.net/p8ARq/610/

关于javascript - 使用 Jquery 显示下拉列表中的链接的更简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34727448/

相关文章:

javascript - Knockout.js 的 View 模型声明。有两种方法

javascript - 了解 Node RED 中的 this._(STRING) 调用

javascript - Firebase 存储 downloadURL 的 url 字符串中包含 "v0"

javascript - 对父子对象进行分组

html - Bootstrap 不允许我将自己的尺寸添加到 div

javascript - UIWebView 中的错误 CSS 行为 : font-size is misinterpreted

javascript - 以 ISO YYYY-MM-DDThh :mm:ss. sTZD 格式转换日期

jQuery 工具提示检测屏幕边缘

html - 带有CSS的png图像的透明背景

html - Bootstrap 导航栏通知徽章