Javascript 2单击一个元素上的事件,只需运行一个
我在一个元素(按钮)上有两个单击事件。第一个是一个默认函数,用于执行一些常规检查(可以在我的过程中的常规步骤上执行),第二个是针对我的过程中的特定步骤的特定检查 我的过程中的所有步骤都有一个下一步按钮,可以转到下一步(下一页),但是如果一个步骤需要特定的检查(字段验证),我会给它周围的Javascript 2单击一个元素上的事件,只需运行一个,javascript,jquery,html,events,Javascript,Jquery,Html,Events,我在一个元素(按钮)上有两个单击事件。第一个是一个默认函数,用于执行一些常规检查(可以在我的过程中的常规步骤上执行),第二个是针对我的过程中的特定步骤的特定检查 我的过程中的所有步骤都有一个下一步按钮,可以转到下一步(下一页),但是如果一个步骤需要特定的检查(字段验证),我会给它周围的一个额外的类,这样我就可以用jQuery处理它 默认步骤下一步按钮 <a class="next-button" href="http://www.example.com/to-next-step/">
一个额外的类,这样我就可以用jQuery处理它
默认步骤下一步按钮
<a class="next-button" href="http://www.example.com/to-next-step/">Next step</a>
<a class="next-button specific-step" href="http://www.example.com/to-next-step/">Next step</a>
HTML:
特定步骤下一步按钮
<a class="next-button" href="http://www.example.com/to-next-step/">Next step</a>
<a class="next-button specific-step" href="http://www.example.com/to-next-step/">Next step</a>
HTML:
当我在一个有额外类的步骤上单击按钮时,两个函数都在运行。是否可以只运行“特定下一步按钮功能”?向特定元素添加新类(例如特定步骤) 默认按钮
<a class="next-button" href="http://www.example.com/to-next-step/">Next step</a>
<a class="next-button specific-step" href="http://www.example.com/to-next-step/">Next step</a>
试试这个。“>”确保将单击功能绑定到“特定步骤”的子级
测试父级是否从附加到所有
的单一通用单击处理程序内部具有特定步骤。下一步按钮
:
$('.next-button').click(function() {
if($(this).parent().hasClass('specific-step')){
performSpecificStep();
}
else{
// Do standard stuff
}
});
另一种方法是使用,但此解决方案要求先附加“特定”处理程序,因为它们按附加顺序执行:
e、 g
jsiddle:由于您希望为每种类型的链接提供完全独立的功能,因此我将使用不同的类来标识每种类型的链接
另一个。下一个按钮
选择器仍将触发另一个事件。这不有用,因为第一次单击事件仍将运行。只需在一个事件中对父级进行测试,更简单的^^@Callum,无需在allOP中包含父级,可能需要父级来设置bro^^^样式,这与我在测试类时得到的结果相同,我感觉你会得到选票的。人们喜欢性感的代码布局。有投票权。但它不会仍然有效,因为。具体的步骤仍然是父母?@TrueBlueAussie抱歉,超级丑。@M K:啊,复仇否决投票。这真的很简单,很明显而且有效:)这很有趣,因为现在你唯一的选票来自我@TrueBlueAussie-hehe。喜欢更多的人仍然发布“我可以有代表吗?”如果你可以控制处理程序添加的顺序,我已经在我的答案中添加了一行替代选项(使用)
$('.specific-step > .next-button').click(function() {
// Specific checks
});
$('.next-button').click(function() {
if($(this).parent().hasClass('specific-step')){
performSpecificStep();
}
else{
// Do standard stuff
}
});
$('.specific-step .next-button').click(function (e) {
e.stopImmediatePropagation();
});
$('.next-button').click(function (e) {
});