【发布时间】:2013-09-04 20:43:22
【问题描述】:
重要提示!:我必须使用 onclick 属性。在我的情况下,在事件侦听器/处理程序上使用 Jquery 不是一个选项。为什么?我的代码中有很多其他的东西依赖于属性及其在代码中的表现。
在onclick 属性中添加警报时,它按预期工作,警报显示在弹出窗口中并返回 false 防止通过按下按钮提交表单:
<script>
$().ready(function() {
$('.pretty .prettycheckbox').click(function () {
var myType = $('.pretty .prettycheckbox').find("input[class^=car-type]:checked").val();
if (myType == 1) {
$('#sendButton').attr("onclick", "alert('Direct!'); return false;");
}
if (myType == 2) {
$('#sendButton').removeAttr("onclick");
}
});
});
</script>
但是从 onclick 属性调用函数时它不起作用,例如:
<script>
$().ready(function() {
$('.pretty .prettycheckbox').click(function () {
var myType = $('.pretty .prettycheckbox').find("input[class^=car-type]:checked").val();
if (myType == 1) {
$('#sendButton').attr("onclick", "submitDB(); return false;");
}
if (myType == 2) {
$('#sendButton').removeAttr("onclick");
}
});
});
</script>
<script>
$().ready(function(){
function submitDB() {
alert('From function!');
}
});
</script>
知道为什么吗?
为什么这个函数被忽略了?
【问题讨论】:
-
你使用的是jQuery,使用
on绑定事件处理器,不要添加事件处理器属性。 -
@zzzzBov 我需要使用
onclick属性。 -
@JimmyHendrikz 为什么。您需要添加 onclick 而不是正常的点击事件的原因很可能是由于另一个需要修复的问题。
-
@JimmyHendrikz “为什么”非常重要。父级的 .outerHTML 或 .innerHTML 的目标是返回具有该属性的元素吗?还是将事件绑定到元素。您尝试做的事情可能有解决方案,但除了添加 onclick 属性外,我们还需要知道您到底要做什么。添加所述属性的目的是什么?为什么需要以这种方式添加它?你已经知道它不能按照你的方式工作。
-
这并没有告诉我为什么......
标签: jquery