使用 jQuery 的切换元素的正确条件
Proper conditional for a toggled element with jQuery
$(document).ready(function() {
$(".media").hide();
$(".infobox").click(function(event) {
var isVisible = $("."+event.currentTarget.id).is(":visible");
if(isVisible) {
$("."+event.currentTarget.id).slideToggle(100);
}
else {
$("."+event.currentTarget.id).slideToggle(100);
$("#media"+event.currentTarget.id).load("/mediabox/"+event.currentTarget.id);
}
});
});
当用户单击一个元素时,我想切换一个框来显示,然后使用 ajax 加载一些内容。这一切都很好。但是当它再次被单击时,我希望它切换以隐藏并且不再加载内容。
就像目前一样,它将切换取消隐藏并加载 ajax。再次单击时,它只是重新加载 ajax,元素仍然可见。
对于这个javascript新手的任何指导将不胜感激。
$(function () {
var isEverLoadContent = false;
$('.media').hide();
// your code above
else {
if (!isEverLoadContent) {
// Perform ajax request
// if done set to true
isEverLoadContent = true;
}
// Your next task
}
// Continue your code
});
我重新创建了您的问题,以直观地演示如何根据您的要求制作事件。在我的示例中,div 只会在第二次单击时变大,但在任何其他单击时都不会变大。您可以将其应用于您的加载问题。这个过程就是我喜欢称之为标记的。 它与设置变量有关,以便您可以控制函数或语句的流程
$(document).ready( function(){
var happend = false;
$("div").click(function(event){
if($(this).css("background-color") != "rgb(0, 128, 0)" ){
$(this).css("background-color", "green")
console.log($(this).css("background-color"))
// happend = false
}else{
$(this).css("background-color", "blue")
if(!happend){
$(this).animate({"height" : "+=50"})
happend = true
}
}
})
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div>button</div>
我没有测试它,因为我现在无法进入 AJAX。但我想知道它是否适合你或给你一些想法。它可能不适合你,因为我没有研究你的代码所做的一切,但你可以根据自己的喜好调整模式。
$(document).ready(function(){
var happend =false;
$(".media").hide();
$(".infobox").click(function(event){
var isVisible = $("."+event.currentTarget.id).is(":visible");
if ( isVisible ) {
$("."+event.currentTarget.id).slideToggle(100);
}
else {
$("."+event.currentTarget.id).slideToggle(100);
if(!happend){
$("#media"+event.currentTarget.id).load("/mediabox/"+event.currentTarget.id);
happend = true
}
}
});
});
您可以使用计数器/布尔值,当显示元素时,检查计数器/布尔值的值。如果计数器/布尔值仍然等于它的原始值,则加载 ajax 并更改它的值。或者,您可以在第一次加载 ajax 时向元素添加数据属性,然后在显示元素时始终检查该数据属性是否存在。如果存在,请不要加载 ajax 数据。
http://codepen.io/partypete25/pen/EKmyNb
if (!$div.data("loaded")) {
$div.data("loaded", true);
//load ajax data
}
相关文章:
- 如何附加<ul><李>元素位于某个特定条件的父元素列表之间
- 正则表达式条件来删除元素
- KnockoutJS:为虚拟元素使用嵌套的条件if语句
- 根据特定条件使用ng显示/ng隐藏来显示/隐藏元素
- Jquery:当两个或多个条件为true时,选择一个元素
- 从json数组中查找满足条件的特定元素的值
- ng重复向一个元素添加条件类
- 如何使用jQuery绕过具有指定类和两个条件的元素的函数
- 如何用d3有条件地移除元素
- AngularJS ng-if指令在移除元素之前,即使条件为false,也会短暂呈现
- 量角器 - 根据条件识别嵌套下拉元素时超时
- 在元素中搜索字符串,然后将其放入条件语句中
- jQuery 查找与条件匹配的元素
- if数组元素在for循环内部有条件
- 如果满足条件,则使用JQuery向元素添加链接
- 如何用angular js对HTML元素的id属性进行条件设置
- 模板中的条件元素
- Undercore findWhere函数,用于查找与条件a或b匹配的元素
- 使用 jQuery 克隆表单,并添加和删除元素条件
- 零元素条件中的错误“;如果“;未捕获的类型错误:无法读取属性'1'为null