我有一个类reflection
的按钮。加载文档后,我将该元素的值设置为disabled
。我想仅在值设置为active
时才运行函数。
$(document).ready(function() {
$(".reflection").val("Disabled");
$(".reflection").click(function () {
$(".reflection").val("Active");
});
if ($(".reflection").val("Active") {
if(e.clientX < width / 2) {
croquis.fillLayerRect(colors[Math.floor(Math.random() * 5)], (e.clientX + (2 * (width/2 - e.clientX))), e.clientY, brush.getSize(), brush.getSize());
}
else {
croquis.fillLayerRect(colors[Math.floor(Math.random() * 5)], (e.clientX - (2 * (e.clientX - width/2))), e.clientY, brush.getSize(), brush.getSize());
}
}
});
刷新浏览器时,会立即激活if($(".reflection").val("Active")
功能。即使我将值设置为disabled
,该功能仍然有效。我也没有点击.relection
。
答案 0 :(得分:0)
这部分代码是错误的(不只是缺少右括号):
if ($(".reflection").val("Active")) {
它实际上将值设置为&#34; Active&#34;和整个条件始终评估为true 。因为val()
方法返回原始元素对象,这是真实的,这就是为什么你的if语句中的代码总是被执行,以及不需要将值设置为&#34; Active&#34;。
你需要这个:
if ($(".reflection").val() === "Active") {
答案 1 :(得分:0)
您的代码只会在页面加载时触发,因为您为活动执行的检查不会被其他任何内容触发。
如果您尝试这样的事情:
$(document).ready(function() {
$(".reflection").val("Disabled");
$(".reflection").click(function () {
$(".reflection").val("Active");
$(document).trigger('customTrigger');
});
$(document).on('customTrigger ready', function() {
if ($(".reflection").val() == 'Active') {
if(e.clientX < width / 2) {
croquis.fillLayerRect(colors[Math.floor(Math.random() * 5)], (e.clientX + (2 * (width/2 - e.clientX))), e.clientY, brush.getSize(), brush.getSize());
}
else {
croquis.fillLayerRect(colors[Math.floor(Math.random() * 5)], (e.clientX - (2 * (e.clientX - width/2))), e.clientY, brush.getSize(), brush.getSize());
}
}
});
});
然后检查将在文档准备就绪时触发,也会在单击.reflection
时触发。
编辑:我猜这个按钮是<input type="button">
,因为<button>
元素没有值属性。