我有一个带有几个选项的html选择框.选择一个选项后我想要只选择选项,并在选择选项下拉列表中显示第一个选项.我知道如何过滤并只显示一个选项,但我无法弄清楚如何在"选定"选项保持"选中"的情况下包含这两个选项.我包含了与我的代码类似的代码段以及演示.
HTML:
<select id="myDropdown">
<option selected>Select fruit</option>
<option>Grapes</option>
<option>Bananas</option>
<option>Oranges</option>
<option>Apples</option>
</select>
Run Code Online (Sandbox Code Playgroud)
JS:
$(document).on('change', '#myDropdown', function() {
$('option', this).not(this,'option:gt(0)').siblings().remove(); });
Run Code Online (Sandbox Code Playgroud)
我试图使用第一个选项来执行另一个'on change'功能,所以我需要选择的选项保持选中状态,其余的被过滤除了第一个.例如,如果选择了"橘子",您会看到:
<select id="myDropdown">
<option>Select fruit</option>
<option>Oranges</option> //selcted value
</select>
Run Code Online (Sandbox Code Playgroud)
BTW我也使用jquery mobile来设计风格.
我正在使用 webpack 将一个 React 应用程序捆绑在一个 js 文件中,我想将其添加到客户端站点。所以我最终得到了一个app.js,我可以提供一个 url 来表示文件托管给客户端的位置https://example.mysite.com/apps/app.js,并且可以通过客户端站点上的脚本标签包含该 URL。够简单的。
我在这里可能遇到的问题是浏览器端缓存。我不能在这里使用版本标签,因为要求客户不断更新其网站上的代码是不现实的期望。
Webpack 哈希也不是一个选项,因为这意味着更新客户端的文件,这也是我想要解决的问题。
有没有办法防止我的app.js文件被缓存并在每次app.js文件更改时获取文件的新版本?
过去几天我一直被困在缓存地狱中,虽然我开始得到它仍然有点挣扎。
期望的结果
我想在站点上包含一个 JS 文件并缓存它和/或仅在服务器上更改文件时获取文件的新副本。我不能在文件名中使用版本标签或哈希。文件名需要保持一致。
我在哪里
从我使用 Etags 阅读本文后所了解的内容来看,这是解决此问题的完美解决方案。它们将在文件更改时更新,如果标签不匹配,将发送文件的新版本。当我通过浏览器请求文件时,这似乎有效
所以你可以看到,在第一个请求中,我得到 200,下载大小为 292 B,在第二个请求中,因为标签匹配,我得到 304,下载大小为 137 B(我假设只是标题大小)。伟大的!这正是我想要的。
我的问题
现在当我从浏览器请求文件时这有效,但在脚本标记中添加 js 文件不会以相同的方式发送请求标头。所以,打开下面的html文件
<!DOCTYPE html>
<html>
<body>
<script src="https://myTestSite.com/testCache.js">
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我的 js 文件每次都被提取,因为if-none-match请求头不存在。使用 html 脚本标记时,如何复制在上述场景中观察到的行为?

TL;DR
在使用 html 脚本标签而不是简单的浏览器 GET 请求时,如何使用 Etags 仅请求修改的 JS 文件?
我最近开始涉足 DevOps 方面,目前正在使用 Terraform 和 AWS ECS 设置一个简单的 Web 服务器来托管我的 Web 应用程序。
使用我当前的 Terraform 配置,我可以看到我的集群是使用具有我的任务定义的服务创建的。我不知道如何运行从 Terraform 启动网络服务器所需的任务。我只能看到创建任务定义和服务的能力,但不能运行它们。我对这两种技术都很陌生,所以我担心我可能会遗漏一些简单的东西。
我使用的设置来自我在网上找到的一个我试图遵循的示例。
TL;DR:我可以使用 Terraform 创建服务,但似乎无法弄清楚如何运行它们。
在下面的示例中,我有一个要更新的元素(水果)数组,并使用更新后的数组执行其他操作(在这种情况下,保存更新后的列表)。我的理解是关于重新渲染状态将更新的信息,但是这里没有。或者状态更新和我的操作之间存在延迟。
在该addFruit函数中,我可以看到立即添加了“ Peach”,但该saveFruits函数的控制台仍显示状态fruit保持不变。我该如何更新才能立即使用。(我知道在这种情况下,我可以将newFruits变量传递saveFruits给update,但是我也需要fruits针对其他地方进行更新)。
请原谅我,因为这是我关于响应异步状态的百万分之一的问题,但是有些事情还没有为我解决。
const { useState } = React;
function ParentComp() {
const[fruits, setFruits] = useState(['Apple', 'Orange', 'Banana', 'Pomegranate', 'Kiwi'])
const addFruit = () => {
let newFruits = Object.assign([], fruits)
newFruits.push('Peach')
setFruits(newFruits)
saveFruits()
}
const saveFruits = () => {
console.log('API req to save fruits.', fruits)
}
return (
<div>
{ fruits.map( (fruit, key) => <div key={key}>{fruit}</div> ) }
<button type="button" onClick={addFruit}>Add Peach</button>
</div>
)
} …Run Code Online (Sandbox Code Playgroud)javascript ×3
caching ×2
reactjs ×2
amazon-ecs ×1
etag ×1
html ×1
http ×1
jquery ×1
react-hooks ×1
terraform ×1
webpack ×1