[英]A quick question about keypress and jQuery
$(document).keydown(function(e) {
好吧,那是我的代码-我想知道是否可能有类似这样的东西:
$(document).not('#pinkElephant').keydown(function(e) {
(除了,那不行...)
有任何想法吗?
非常感谢!
ps里面所有的功能都是一个switch
语句。
[编辑]嘿家伙ñ女同胞们-我不能return false;
因为我需要输入的元素是<input>
文本,所以键盘仍然需要返回此处。
这真的让我感到困惑:(
如果您确实想将keydown event handler
绑定到标记中的所有节点,除了#pinkElephant
之外,您需要这样做:
$(document).find('*').not('#pinkElephant').keydown(function() ..
或短
$(':not(#pinkElephant').keydown(function() ...
隐式使用通用选择器*
。
请注意,就性能而言,这永远不会有任何好处。 我不知道您的标记,但是我希望使用这种选择器不会造成太大的伤害。
更新
受评论的启发,您也可以像这样:
$(document).click(function(event) {
if( event.target.id === 'pinkElephant' || $.contains($('#pinkElephant')[0], event.target) )
return false;
// ...
});
最后一个代码段检查是否#pinkElephant
本身或子节点,并阻止了传播和默认操作。 这是通过调用$.contains()
帮助来完成的
这是通过检查目标元素的id
是否不是pinkElephant
来执行所需操作的另一种方法。 由于此方法不使用通用选择器'*'
因此它应具有更好的性能:
$(document).keydown(function(e) {
if (e.target.id !== "pinkElephant") {
alert("I'm not pink!");
}
});
(从评论更新)
我假设您不希望pinkElephant
元素触发keydown
。
在#pinkElephant
上放置一个处理程序,以停止事件的传播。
$('#pinkElephant').bind('keydown',false);
请注意,将false
传递到.bind()
需要jQuery 1.4.3或更高版本。
如果您使用的是旧版本,请执行以下操作:
$('#pinkElephant').bind('keydown',function(){return false;});
尝试以下方法:
$(':not(#pinkElephant)').keydown(function(e) {
// ...
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.