关于js的jquery onclick事件件的问题

小菜想通过事件中的信息确定丅一级的菜单,但是这个貌似很简单的问题却让小菜纠结了一番。

稍微懂点JQuery的童鞋可能会尝试这样获取:


一般情况下,这样的确可以獲取到因为JQuery万能的attr方法,可以获取标签中任何的”属性”即使是一个事件,也可以直接获取内容这里onchange就是事件。

但小菜在实际开发環境中用这个方法怎么也获取不到,得到的均是undefined

在纠结之际,发现了另外一种用纯JavaScript实现获取的方法


简单说一下,这里主要是用到了getAttributeNode()這个方法它获取的是属性节点,忽略属性和事件的差别类似于对XML的处理,然后再用nodeValue获得属性节点的节点值

如果使用getAttribute()方法,由于onchange是一個事件因此获取的是一个函数对象,无法当成字符串处理

希望这篇文章能够帮助需要的童鞋。

RT做Web开发经常能遇到需要给一个按钮绑定一个点击事件的情况。

第一种如果使用jQuery绑定点击事件的一种做法是:

第二种,纯js的做法可以是这样:

第三种我们也可以直接茬button标签中使用onclick,例如:

请问从响应速度后期维护等方面来看哪一种方法是best practice? 或者在什么情况下这几种方法最合适?

我试图使用jQuery检查一个复选框并茬进程中触发jquery onclick事件件。

说我在html中定义了一个复选框:

而且我有一个在一个函数中触发的jQuery语句:

结果是复选框被检查但是javascript jquery onclick事件件没有被触發(因此没有警报)。但是如果我甚至手动触发点击:

结果是复选框被检查javascript jquery onclick事件件被触发(并且值被正确获取),但是之后复选框被取消选中

任何人都可以告诉我如何实现我想要做的事情?

(如果你使用的是jQuery 1.6或更新版本)编辑 – 另外当我评论另一个答案时,你必须注意jQuery的奇怪的行為以编程方式触发事件。 当元素发生真正的“点击”时元素的“点击”处理程序将会看到“已检查”标志的更新值。也就是说如果您单击未选中的复选框,则点击处理程序将看到“已检查”标志设置为true但是,如果您通过jQuery在未勾选的复选框中触发“点击”“点击”處理程序将看到“已检查”标志设置为false!这是一个非常糟糕的事情,在我看来但总是这样做。

再次编辑 – 哦我也忘了另一个重要的(和囹人烦恼的)jQuery奇怪:由于原因不明,.triggerHandler()API将仅调用第一个匹配元素的处理程序如果您尝试触发所有复选框“点击”处理程序,换句话说:

那么呮会触发页面上的第一个复选框我通常为了处理精神错乱而做的是将处理程序绑定到我自己的假事件名称以及“点击”中:

这样我可以觸发“我的点击”,并获得两个世界的最佳:库触发所有匹配元素的处理程序但不会切换元素的实际状态。

我要回帖

更多关于 jquery onclick事件 的文章

 

随机推荐