当我想在某个事件被触发后阻止其他事件处理程序执行时,我可以使用两种技术之一.我将在示例中使用jQuery,但这也适用于plain-JS:
event.preventDefault()$('a').click(function (e) {
// custom handling here
e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)
return false$('a').click(function () {
// custom handling here
return false;
});
Run Code Online (Sandbox Code Playgroud)
这两种停止事件传播的方法之间有什么显着差异吗?
对我来说,return false;比执行方法更简单,更短并且可能更不容易出错.使用该方法,您必须记住正确的套管,括号等.
另外,我必须在回调中定义第一个参数才能调用该方法.也许,有一些原因可以解释为什么我应该避免这样做并使用preventDefault呢?有什么更好的方法?
javascript jquery event-handling event-propagation dom-events
我需要调试一个使用jQuery的Web应用程序来做一些相当复杂和混乱的DOM操作.有一次,某些与特定元素绑定的事件不会被触发,只是停止工作.
如果我有能力编辑应用程序源代码,我会向下钻取并添加一堆Firebug console.log()语句并注释/取消注释代码片段以尝试查明问题.但我们假设我无法编辑应用程序代码,需要使用Firebug或类似工具完全在Firefox中工作.
Firebug非常善于让我导航和操纵DOM.但到目前为止,我还没有弄清楚如何使用Firebug进行事件调试.具体来说,我只想查看在给定时间绑定到特定元素的事件处理程序列表(使用Firebug JavaScript断点来跟踪更改).但是Firebug没有能力看到绑定事件,或者我太笨了而无法找到它.:-)
任何建议或想法?理想情况下,我只想查看和编辑绑定到元素的事件,类似于今天我可以编辑DOM的方式.
当选中/取消选中复选框时,我希望事件触发客户端:
$('.checkbox').click(function() {
if ($(this).is(':checked')) {
// Do stuff
}
});
Run Code Online (Sandbox Code Playgroud)
基本上我希望它发生在页面上的每个复选框上.这种方法是点击并检查状态好吗?
我认为必须有一个更清晰的jQuery方式.有人知道解决方案吗?
如何检测textField中的任何文本更改?委托方法shouldChangeCharactersInRange适用于某些事情,但它并不能完全满足我的需要.由于它返回YES,因此textField文本不可用于其他观察者方法.
例如,在我的代码calculateAndUpdateTextFields中没有获得更新的文本,用户已键入.
他们是否有办法获得类似textChangedJava事件处理程序的东西.
- (BOOL)textField:(UITextField *)textField
shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string
{
if (textField.tag == kTextFieldTagSubtotal
|| textField.tag == kTextFieldTagSubtotalDecimal
|| textField.tag == kTextFieldTagShipping
|| textField.tag == kTextFieldTagShippingDecimal)
{
[self calculateAndUpdateTextFields];
}
return YES;
}
Run Code Online (Sandbox Code Playgroud) 我有
$(document).ready(function() {
//set initial state.
$('#textbox1').val($(this).is(':checked'));
$('#checkbox1').change(function() {
$('#textbox1').val($(this).is(':checked'));
});
$('#checkbox1').click(function() {
if (!$(this).is(':checked')) {
return confirm("Are you sure?");
}
});
});Run Code Online (Sandbox Code Playgroud)
和
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" id="checkbox1"/><br />
<input type="text" id="textbox1"/>Run Code Online (Sandbox Code Playgroud)
此处更改的事件使用复选框状态更新文本框值.我使用click事件确认取消选中时的操作.如果用户选择取消,则复选标记将恢复,但更改甚至会在确认之前触发,使事物处于不一致状态(选中复选框时文本框显示为false).如何处理取消并保持文本框值与检查状态一致?
我正在通过日历小部件设置日期时间文本字段值.显然,日历小部件的功能如下:
document.getElementById('datetimetext').value = date_value;
Run Code Online (Sandbox Code Playgroud)
我想要的是:在更改日期时间文本字段中的值时,我需要重置页面中的其他一些字段.我已经在datetimetext字段中添加了一个onchange事件监听器,该字段没有被触发,因为我猜想onchange只有当元素获得焦点并且在失去焦点时其值被更改时才会触发.
因此,我正在寻找一种手动触发此onchange事件的方法(我想应该注意检查文本字段中的值差异).
有任何想法吗 ?
a只能在这里决赛.为什么?如何a在onClick()不将其保留为私有成员的情况下重新分配方法?
private void f(Button b, final int a){
b.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
int b = a*5;
}
});
}
Run Code Online (Sandbox Code Playgroud)如何5 * a点击它返回?我的意思是,
private void f(Button b, final int a){
b.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
int b = a*5;
return b; // but return type is void
}
});
}
Run Code Online (Sandbox Code Playgroud)我理解事件的目的,特别是在创建用户界面的环境中.我认为这是创建活动的原型:
public void EventName(object sender, EventArgs e);
Run Code Online (Sandbox Code Playgroud)
事件处理程序做了什么,为什么需要它们,以及如何创建一个?
我不明白它们的区别,它们看起来都是一样的,但我猜它们不是.
任何何时使用其中一个或另一个的例子都将受到赞赏.
我有一个隐藏的文本字段,其值通过AJAX响应更新.
<input type="hidden" value="" name="userid" id="useid" />
Run Code Online (Sandbox Code Playgroud)
当这个值改变时,我想发出一个AJAX请求.任何人都可以建议如何检测变化?
我有以下代码,但不知道如何查找值:
$('#userid').change( function() {
alert('Change!');
})
Run Code Online (Sandbox Code Playgroud) event-handling ×10
javascript ×5
jquery ×5
events ×2
.net ×1
c# ×1
dom-events ×1
field ×1
firebug ×1
hidden ×1
ios ×1
java ×1
objective-c ×1
onchange ×1
swift ×1