我昨天刚开始研究jQuery,之前我只用PHP编程。因此,我可以解释我正在寻找的最佳方式是在jQuery中说“其他”的方法。
假设我有以下内容:
$('input').click(function() {
$(this).addClass('fieldBorder');
});
我怎么说“输入字段点击时,然后删除类fieldBorder”。我在jQuery中看到很多方法可以做,但是当用户的动作发生时,人们怎么说相反。
另一个例子:
$('a.clickMe').mouseover(function() {
$('hiddenMessage').show();
});
在上面的示例中,一旦用户停止将鼠标悬停在链接上以使用以下内容,这是隐藏隐藏消息的唯一方法:
$('a.clickMe').mouseout(function() {
$('hiddenMessage').hide();
});
我感到有一种唠叨的感觉,即有一种更简单/更少冗余的方式。这是“回电”的意思吗?
从答案中我猜测没有简单的方法可以做到这一点。但是我在ajax函数中注意到你有这个:
$.ajax({
type: 'get'
url: 'script.php',
data: 'foo=boo';
success: function() {
alert('it worked');
}, error: function() {
alert('it did not work');
}
})
其中所有其他jQuery代码都存在, something else: function()
部分。
答案 0 :(得分:1)
我认为你想要mouseup
事件,尽管你可能想要blur
事件。我不确定“点击”是什么意思。
对于mouseover
/ mouseout
,有hover
事件可让您配对处理程序。
没有“在'对面'事件(无论可能是什么),请以某种方式运行我刚刚在此处理程序中运行的所有代码的反向”。听起来很有趣! :)
答案 1 :(得分:0)
这不是一个真正的jQuery,而是关于浏览器如何处理事件。
元素可以具有焦点。如果可以,如果也可以失去焦点。元素失去焦点时触发的事件是blur
event。
根据您所谈论的元素类型,它可能永远不会获得焦点,即使被点击,也可能在不方便的时间失去焦点。在这种情况下,您可能只想听取clicks
或document
上的用户<body>
,并确定您是否需要做某事。
AJAX success
和error
处理程序与事件处理不完全相同。在某些特定点上,AJAX请求要么成功要么失败,这是一次if..else
。事件更复杂,任何事件都可能随时发生,并且不一定是“相反”的事件。 click
的反义词是什么?没有unclick
之类的东西。只有click on a different element
。
关于如何使用这些约束构建特定行为,有一些习惯用法。比如,在点击链接时显示一些元素,并在点击任何不是链接或显示元素的元素时隐藏元素。
例如,您将click
事件处理程序附加到document
,它将捕获所有点击事件。对于每个触发的事件,您可以确定其target
是某个特定元素还是该元素的子元素。
作为替代方案,您必须了解事件冒泡。单击某个元素时,将触发该元素的click
事件。然后将触发元素父级的click
事件,依此类推,直到达到顶部元素(这也是document
捕获所有事件的方式)。
您可以将事件附加到执行某项操作的document
。您还会将click
事件附加到stops the event from bubbling up的某个特定元素。通过这种方式,您创建了“在点击任何时执行某些操作但特定元素”的效果。
答案 2 :(得分:0)
这是另一种方法。它可以被视为if / else语句以其他方式。
$("#id").hover(function(e){
//you can do whatever you want on mouseover here.
},
function(){
//you can do whatever you want on mouse out here.
});