在不离开页面的情况下改变按钮的颜色
Change color of button without leaving page
这允许我在不离开页面的情况下更改照片的类别。它的工作原理。
下一步-照片的预定义类别有一个绿色背景的按钮,其他两个具有红色背景。当做出一个新的选择时,我希望按下的按钮变成绿色,其他两个按钮的照片变成/保持红色。绿色的css是c_on,红色的css是c_off。
如何使用javascript/ajax/jquery将正确的css设置为正确的按钮?
非常感谢任何帮助。(样式在我的代码中是正确定义的,但我不能让它正确粘贴在这里,所以我使用了注释)。
JS:
<script type="text/javascript">
$(function () {
$('form').on('submit', function (e) {
$.ajax({
type: 'post',
url: "test_ajax_update_code.php",
data: $(this).serialize(),
});
e.preventDefault();
});
});
</script>
CSS: .c_on {color: #000;background-color:#F00;}
.c_off {color: #000;background-color:#0F0;}
HTML: <img src="myfoto1.jpg" width="500" height="333" border="0"><br>
<form id="form1">
<input name="num" type="hidden" value="1373" >
<input name="shw" type="hidden" value="1" >
<input type="submit" value="1" class="c_on">
</form>
<form id="form2">
<input name="num" type="hidden" value="1373" >
<input name="shw" type="hidden" value="2" >
<input type="submit" value="2" class="c_off">
</form>
<form id="form3">
<input name="num" type="hidden" value="1373" >
<input name="shw" type="hidden" value="3" >
<input type="submit" value="3" class="c_off">
</form>
<img src="myfoto2.jpg" width="500" height="333" border="0"><br>
<form id="form1">
<input name="num" type="hidden" value="1374" >
<input name="shw" type="hidden" value="1" >
<input type="submit" value="1" class="c_off">
</form>
<form id="form2">
<input name="num" type="hidden" value="1374" >
<input name="shw" type="hidden" value="2" >
<input type="submit" value="2" class="c_on">
</form>
<form id="form3">
<input name="num" type="hidden" value="1374" >
<input name="shw" type="hidden" value="3" >
<input type="submit" value="3" class="c_off">
</form>
您可以这样做:
// set all buttons to c_off
$('input[type="submit"]').removeClass('c_on').addClass('c_off');
// set the submitted one to c_on
$(this).find('input[type="submit"]').removeClass('c_off').addClass('c_on');
这将使您的代码看起来如下:
$(function () {
$('form').on('submit', function (e) {
$.ajax({
type: 'post',
url: "test_ajax_update_code.php",
data: $(this).serialize(),
});
// set all buttons to c_off
$('input[type="submit"]').removeClass('c_on').addClass('c_off');
// set the submitted one to c_on
$(this).find('input[type="submit"]').removeClass('c_off').addClass('c_on');
e.preventDefault();
});
});
我发现很难准确理解您的意思,但是使用几个事件和布尔值,您应该能够相当容易地完成这样的事情。
var image_1 = false
if (image_1 === true) {
//change button styles
}
var element = getElement('div.image') // example
element.addEventListener('click', function () {
image_1 = true'
}
甚至不涉及任何ajax。例如,您可以在全部为true时提交
希望对您有所帮助
$('input:submit').on('click',function(){
$('input:submit').removeClass('c_on').addClass('c_off');
$(this).removeClass('c_off').addClass('c_on');
})
您应该为每个按钮添加一个单击事件,它允许您删除任何.c_on
类,并将其应用于被单击的按钮。
$('input[type="submit"]').on('click', function () {
$(".c_on").removeClass('c_on').addClass('c_off');
$(this).removeClass('c_off').addClass('c_on');
}}
尝试此解决方案并检查CSS
是否适合该类的颜色。
更新:
-
id
不能重复。因此,我将forms
的id
更改为class
。 - 然后我添加了新的
data-image
属性来区分按钮集。
更新的代码片段:
$(function() {
$('form').on('click', 'input[type="submit"]', function(e) {
$.ajax({
type: 'post',
url: "test_ajax_update_code.php",
data: $(this).parent().serialize(),
});
var clicked = $(this),
imageName = clicked.data("image");
clicked.removeClass("c_off").addClass("c_on");
$('input[type="submit"]').each(function() {
var self = $(this);
if (!clicked.is(self)) {
if (self.hasClass("c_on") && imageName == self.data("image"))
self.removeClass("c_on").addClass("c_off");
}
});
e.preventDefault();
});
});
.c_off {
color: #000;
background-color: #F00;
}
.c_on {
color: #000;
background-color: #0F0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<img src="myfoto1.jpg" width="500" height="333" border="0">
<br>
<form class="form1">
<input name="num" type="hidden" value="1373">
<input name="shw" type="hidden" value="1">
<input type="submit" value="1" class="c_on" data-image="img1">
</form>
<form class="form2">
<input name="num" type="hidden" value="1373">
<input name="shw" type="hidden" value="2">
<input type="submit" value="2" class="c_off" data-image="img1">
</form>
<form class="form3">
<input name="num" type="hidden" value="1373">
<input name="shw" type="hidden" value="3">
<input type="submit" value="3" class="c_off" data-image="img1">
</form>
<img src="myfoto2.jpg" width="500" height="333" border="0">
<br>
<form class="form1">
<input name="num" type="hidden" value="1374">
<input name="shw" type="hidden" value="1">
<input type="submit" value="1" class="c_off" data-image="img2">
</form>
<form class="form2">
<input name="num" type="hidden" value="1374">
<input name="shw" type="hidden" value="2">
<input type="submit" value="2" class="c_on" data-image="img2">
</form>
<form class="form3">
<input name="num" type="hidden" value="1374">
<input name="shw" type="hidden" value="3">
<input type="submit" value="3" class="c_off" data-image="img2">
</form>
相关文章:
- 在不改变状态的情况下,根据减少器中的给定索引更改嵌套数组值
- 在不改变循环速度的情况下更改更新速度
- 另一个“;如何在不离开网页的情况下改变URL”;
- 在套接字中发送文件.在不改变用户窗口位置的情况下执行IO操作
- 在不改变值的情况下格式化输入类型文本
- 在不改变整个状态的情况下改变state数组(REACT / REDUX)
- 如何在不影响其他模态的情况下用CSS改变模态的宽度?
- 如何克隆一个XML节点,改变其中的值,并在不改变所有节点的情况下添加它
- 在不改变元素大小的情况下放大元素
- 如何在没有第三方JS库的情况下改变文本区域滚动条的颜色
- 在不离开页面的情况下改变按钮的颜色
- 如何在不调用函数的情况下改变jQuery的执行上下文
- 如何在不复制的情况下改变对象
- 谷歌地图如何在不重新加载和不使用历史API的情况下改变其URL ?
- 如何在不创建新对象的情况下改变nokia.maps.map.StandardMarker的颜色
- 在不重新加载的情况下改变Li中的Dom元素
- Facebook如何在不重载页面或使用# or的情况下改变浏览器地址栏中的URL ?
- 如何用Angular和Node JS在不重载页面的情况下改变数据
- 在没有AJAX的情况下改变显示
- Javascript -如何在没有'this'的情况下改变作用域和访问方法?