针对AJAXDIV仅在JavaScript中刷新和ajax局部刷新div这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展unvalid,OK、CSS:autoheightoncontains
针对AJAX DIV 仅在 JavaScript 中刷新和ajax局部刷新div这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展
- AJAX DIV 仅在 JavaScript 中刷新(ajax局部刷新div)
- CSS:auto height on contains div,100%height on background div inside containing div
- DIV 重叠 CSS 让 DIV 层叠 两个 DIV 或多个 DIV 顺序重叠加
- jquery – 为什么$(“div> div”)的工作方式与$(“div”)不同.child(“div”)?
AJAX DIV 仅在 JavaScript 中刷新(ajax局部刷新div)
JQuery 是一个 JavaScript 库,它允许您充分利用 JavaScript 的潜力。 除其他功能外,它还包括用于提交表单的 AJAX。 所以它已经是 JavaScript 代码了。
你也可以去掉 JQuery 函数,把代码和 Javascript 的其余部分放在一起:
function myFunction() {
var e = document.getElementById("menu");
var selected = e.options[e.selectedIndex].value;
// Load data
document.getElementsByClassName("noselection")[0].style.display = "none";
var x = document.getElementsByClassName("hideprev");
var i;
for (i = 0; i < x.length; i++) {
x[i].style.display = "none";
}
document.getElementsByClassName(selected)[0].style.display = "block";
};
select {
width: 100%;
padding: 15px;
display: inline-block;
border-top-left-radius: 15px;
border-top-right-radius: 15px;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
border: 0;
color: black;
background: red;
outline: none;
appearance: none;
}
.content {
min-height: 250px;
border-top-left-radius: 0;
border-top-right-radius: 0;
border-bottom-left-radius: 15px;
border-bottom-right-radius: 15px;
border: solid red 5px;
padding: 10px;
}
在 HTML 上带有“onchange”功能
<script src="//ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<select id="menu" onchange="myFunction()">
<optgroup label="2021">
<option value="January21">January</option>
<option value="February21">February</option>
<optgroup label="2020">
<option value="January20">January</option>
<option value="February20">February</option>
<option value="March20">March</option>
<option value="April20">April</option>
<option value="May20">May</option>
<option value="June20">June</option>
<option value="July20">July</option>
<option value="August20">August</option>
<option value="September20">September</option>
<option value="October20">October</option>
<option value="November20">November</option>
<option value="December20">December</option>
</select>
<div>
<div>You need to make a selection above first</div>
<div>Content from January 2020</div>
<div>Content from February 2020</div>
<div>Content from March 2020</div>
<div>Content from April 2020</div>
<div>Content from May 2020</div>
<div>Content from June 2020</div>
<div>Content from July 2020</div>
<div>Content from August 2020</div>
<div>Content from September 2020</div>
<div>Content from October 2020</div>
<div>Content from November 2020</div>
<div>Content from December 2020</div>
<div>Content from January 2021</div>
<div>Content from February 2021</div>
</div>
,
您可以在更新所选选项时添加/删除类。通过 js,您需要添加一个事件侦听器,然后在您的内容 div 上循环。由于显示/隐藏的内容已经在这里,切换一个类来更新显示状态应该就足够了..
见:https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
基本可能的例子
let select = document.querySelector("#menu");
let options = document.querySelectorAll(".content>div");
select.addEventListener("change",function() {
// here do something once selected option is changed
// example looping on a few div and comparing classname to select.value
for (i = 0; i < options.length; i++) {
options[i].classList.remove("showprev");
if (options[i].classList.contains(this.value)) {
options[i].classList.add("showprev");
}
// end loop example
}
});
.hideprev {
display: none;
}
.showprev {
display: block;
}
/* from your previous post */
select {
cursor:pointer; /* show it is clickable */
width: 100%;
padding: 15px;
display: inline-block;
border-top-left-radius: 15px;
border-top-right-radius: 15px;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
border: 0;
color: black;
background: red;
outline: none;
appearance: none;
}
.content {
min-height: 250px;
border-top-left-radius: 0;
border-top-right-radius: 0;
border-bottom-left-radius: 15px;
border-bottom-right-radius: 15px;
border: solid red 5px;
padding: 10px;
}
<select id="menu">
<optgroup label="2021">
<option value="January21">January</option>
<option value="February21">February</option>
<optgroup label="2020">
<option value="January20">January</option>
<option value="February20">February</option>
<option value="March20">March</option>
<option value="April20">April</option>
<option value="May20">May</option>
<option value="June20">June</option>
<option value="July20">July</option>
<option value="August20">August</option>
<option value="September20">September</option>
<option value="October20">October</option>
<option value="November20">November</option>
<option value="December20">December</option>
</select>
<div>
<div>You need to make a selection above first</div>
<div>Content from January 2020</div>
<div>Content from February 2020</div>
<div>Content from March 2020</div>
<div>Content from April 2020</div>
<div>Content from May 2020</div>
<div>Content from June 2020</div>
<div>Content from July 2020</div>
<div>Content from August 2020</div>
<div>Content from September 2020</div>
<div>Content from October 2020</div>
<div>Content from November 2020</div>
<div>Content from December 2020</div>
<div>Content from January 2021</div>
<div>Content from February 2021</div>
</div>
ps 无需删除问题并几乎立即重新发布,可能需要几个小时甚至几天才能有人回答。真正的人类在私人生活和最终工作的另一边。
unvalid, OK
<div /> is not a valid markup. A self-closing tag is not permitted.
You need to use the full version <div></div>.
A self closing div tag would make no sense, since it will result in an empty div. An empty div is usually not rendered by most of the browsers.
CSS:auto height on contains div,100%height on background div inside containing div
我想要的背景容器,它是内容div的兄弟div来拉伸填充容器。背景容器包含将背景分成块的div。
背景和容器div具有100%的宽度,内容容器没有。
HTML:
<div id="container"> <div id="content"> Some long content here .. </div> <div id="backgroundContainer"> <div id="someDivToShowABackground"/> <div id="someDivToShowAnotherBackground"/> </div> </div>
CSS:
#container { height:auto; width:100%; } #content { height: auto; width:500px; margin-left:auto; margin-right:auto; } #backgroundContainer { height:100%;??? I want this to be the same height as container,but 100% makes it the height of the viewport. }
解决方法
同样高度的列的解决方案是CSS Tabular Display Technique,意味着使用display:table功能。
它适用于Firefox 2,Safari 3,Opera 9和IE8。
CSS表格显示的代码:
HTML
<div id="container"> <div id="rowWraper"> <div id="col1"> Column 1<br />Lorem ipsum<br />ipsum lorem </div> <div id="col2"> Column 2<br />Eco cologna duo est! </div> <div id="col3"> Column 3 </div> </div> </div>
CSS
<style> #container{ display:table; background-color:#CCC; margin:0 auto; } .row{ display:table-row; } .col{ display: table-cell; } #col1{ background-color:#0CC; width:200px; } #col2{ background-color:#9F9; width:300px; } #col3{ background-color:#699; width:200px; } </style>
即使表格单元的宽度的自动扩展有问题,也可以通过插入另一个带有表格单元并赋予其固定宽度的div来容易地解决。无论如何,宽度的过度扩展发生在使用极长的单词(我怀疑任何人会使用,比方说,600px长字)或一些div的宽度大于table-cell的宽度的情况下。
Faux Column Technique是最常用的解决这个问题的解决方案,但它有一些缺点,如果你要调整背景平铺图像的大小,如果你想调整列的大小,它也不是一个优雅的解决方案。
OneTrueLayout Technique包括创建一个极大的高度的填充底部,并通过应用具有相同巨大值的负边距底部,将真实边框位置带到“正常逻辑位置”,并隐藏由padding with overflow:hidden应用于内容wraper。一个简化的例子是:
HTML文件:
<html><head> <style> .wraper{ background-color:#CCC; overflow:hidden; } .floatLeft{ float:left; } .block{ padding-bottom:30000px; margin-bottom:-30000px; width:100px; background-color:#06F; border:#000 1px solid; } </style> </head> <body> <div> <div>first col</div> <div> Second col<br />Break Line </div> <div>Third col</div> </div> </body> </html>
分层技术必须是一个非常整洁的解决方案,涉及绝对定位的div与一个主要的相对定位封装器div。它基本上由多个子div和主div组成。主div具有强制位置:相对于它的css属性集合。这个div的孩子都是绝对的位置:绝对的。子项必须将顶部和底部设置为0,并将左右尺寸设置为相互容纳列。例如,如果我们有两个列,一个宽度为100px,另一个为200px,考虑到我们想要左侧的100px和右侧的200px,左列必须有{left:0;右:200px}和右列{left:100px; right:0;}
在我看来,在自动化高度容器中未实现的100%高度是一个主要缺点,W3C应考虑修改此属性。
其他资源:link1,link2,link3,link4,link5 (important)
DIV 重叠 CSS 让 DIV 层叠 两个 DIV 或多个 DIV 顺序重叠加
http://www.divcss5.com/shili/s587.shtml
jquery – 为什么$(“div> div”)的工作方式与$(“div”)不同.child(“div”)?
这两行不是一回事.
ele.children("div.a > div").addClass("badActive"); ele.children("div.b").children("div").addClass("active");
http://jsfiddle.net/wGvEu/1/
解决方法
ele.children(“div.b”).children(“div”)选择div.b元素的div,它们本身就是ele的子元素. ele本身可能是任何一种元素,但它必须包含div.b孩子,而div.b孩子需要有div孩子.
正如Felix Kling在上面的评论中所说,你需要使用.find()来搜索所有后代.这适用于您的第一个案例>组合器,如ele.find(“div.a> div”).
今天关于AJAX DIV 仅在 JavaScript 中刷新和ajax局部刷新div的介绍到此结束,谢谢您的阅读,有关
本文标签: