jQuery设置onclick属性是否仅在FireFox上工作?

jQuery设置onclick属性是否仅在FireFox上工作?,jquery,firefox,onclick,Jquery,Firefox,Onclick,我试图设置用jQuery生成的链接的“onclick”属性 虽然其他属性可以正常工作(例如href,但也可以使用其他自定义属性),但设置“onclick”似乎只能在FireFox中工作。在其他浏览器上,该属性被忽略 有什么提示吗?这种行为正确吗?为什么 <html><head> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.mi

我试图设置用jQuery生成的链接的“onclick”属性

虽然其他属性可以正常工作(例如href,但也可以使用其他自定义属性),但设置“onclick”似乎只能在FireFox中工作。在其他浏览器上,该属性被忽略

有什么提示吗?这种行为正确吗?为什么

<html><head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
  jQuery(function(){
    var obj = $('<a/>');
    obj.html('click me');
    obj.attr({'href':'#test', 'onclick':'alert("o hai"); return false;'});
    $('body').append(obj);
  });
</script>
</head><body /></html>

jQuery(函数(){
var obj=$('');
html(“单击我”);
obj.attr({'href':'#test','onclick':'alert(“o hai”);return false;'});
$('body')。追加(obj);
});
编辑:我知道.click()jQuery方法;但这不是重点,我只想设置属性,但不明白为什么它不能像其他attr那样工作。

试试jQuery方式

<script type="text/javascript">
  jQuery(function(){
    var obj = $('<a/>');
    obj.html('click me')
       .attr('href','#test')
       .click(function() {
            alert("o hai");
            return false;
        })
    $('body').append(obj);
  });
</script>

jQuery(函数(){
var obj=$('');
html('单击我')
.attr('href','#test')
。单击(函数(){
警惕(“奥海”);
返回false;
})
$('body')。追加(obj);
});
编辑:尝试将onclick更改为onclick,注意大写字母“C”

jQuery(函数(){
var obj=$('');
html(“单击我”);
obj.attr({'href':'#test','onClick':'alert(“o hai”);return false;'});
$('body')。追加(obj);
});
试试jQuery方式

<script type="text/javascript">
  jQuery(function(){
    var obj = $('<a/>');
    obj.html('click me')
       .attr('href','#test')
       .click(function() {
            alert("o hai");
            return false;
        })
    $('body').append(obj);
  });
</script>

jQuery(函数(){
var obj=$('');
html('单击我')
.attr('href','#test')
。单击(函数(){
警惕(“奥海”);
返回false;
})
$('body')。追加(obj);
});
编辑:尝试将onclick更改为onclick,注意大写字母“C”

jQuery(函数(){
var obj=$('');
html(“单击我”);
obj.attr({'href':'#test','onClick':'alert(“o hai”);return false;'});
$('body')。追加(obj);
});
这种行为正确吗

正如
attr('onsomeevent',…)
从来都不是添加事件侦听器的方法,也不受支持,而且由于巧合,它只能在Firefox上工作,是的

为什么

因为8版之前的IE无法直接获取/设置HTML属性。调用
setAttribute()
仅设置同名的DOM属性。而且
onclick
属性不是字符串属性,因此不能向其写入字符串。它只接受一个函数值

jQuery的
attr()。。。但是使用HTML属性名(比如
class
)而不是DOM属性名(比如
className

(除非它不起作用,因为在某些情况下,它试图通过使用属性来隐藏差异。但由于上述原因,这在IE中仍然不起作用。这不是jQuery最自豪的时刻之一。)

总之,在字符串中包含JavaScript通常是一种代码味道。对于jQuery和现代JavaScript来说,最好的方法是使用函数对象(可能是内联
function(){…}
表达式)

这种行为正确吗

正如
attr('onsomeevent',…)
从来都不是添加事件侦听器的方法,也不受支持,而且由于巧合,它只能在Firefox上工作,是的

为什么

因为8版之前的IE无法直接获取/设置HTML属性。调用
setAttribute()
仅设置同名的DOM属性。而且
onclick
属性不是字符串属性,因此不能向其写入字符串。它只接受一个函数值

jQuery的
attr()。。。但是使用HTML属性名(比如
class
)而不是DOM属性名(比如
className

(除非它不起作用,因为在某些情况下,它试图通过使用属性来隐藏差异。但由于上述原因,这在IE中仍然不起作用。这不是jQuery最自豪的时刻之一。)


总之,在字符串中包含JavaScript通常是一种代码味道。对于jQuery和现代JavaScript来说,最好的方法是使用函数对象(可能是内联的
function(){…}
expressions)。

我知道“jQuery方式”。我需要设置属性,但我不知道为什么它不起作用。使用大写字母C的“onClick”对FF和Chrome都有效。非常感谢。不过,Chrome DOM inspector显示一个带有小写字母“c”的属性,这相当奇怪。不管怎样,它在IE上仍然是坏的,但这可能是另一个问题。所有事件处理程序属性都是显式小写的,仅作为DOM属性。将
onClick
传递给jQuery只会使它在更多浏览器中工作,因为它绕过了内部优化,jQuery直接设置现有属性,而不是使用
setAttribute
(参见jQuery 1.4.2第1486行),这在非XHTML中不区分大小写。它在IE中仍然不起作用,而且无论如何都是不可取的。我知道“jQuery方式”。我需要设置属性,但我不知道为什么它不起作用。使用大写字母C的“onClick”对FF和Chrome都有效。非常感谢。不过,Chrome DOM inspector显示一个带有小写字母“c”的属性,这相当奇怪。不管怎样,它在IE上仍然是坏的,但这可能是另一个问题。所有事件处理程序属性都是显式小写的,仅作为DOM属性。将
onClick
传递给jQuery只会使它在更多浏览器中工作,因为它绕过了内部优化,jQuery直接设置现有属性,而不是使用
setAttribute
(参见jQuery 1.4.2第1486行),这在非XHTML中不区分大小写。这在IE中仍然不起作用,而且无论如何都是不可取的。不是答案