jQuery 忽略第一次点击?
jQuery first click ignored?
我将这段代码与jQueryUI
一起使用
function ViewClient(RelationID) {
console.log('entering');
$('a[id^="contact_show"]').on('click', function (e) {
console.log('clicking '+RelationID);
ShowClientInfo(RelationID);
$('#accordion').accordion({active: 2});
});
}
用户单击以执行操作的 link 看起来像这样(位于手风琴的面板 1 上):
<a href="#" id="contact_show_204" onclick="ViewClient(204);">View Client</a>
这应该会关闭面板 1,并打开面板 2。
手风琴初始化如下:
$( "#accordion" ).accordion({
active: false,
heightStyle: "Content",
collapsible: true
});
当我点击其中一个ID时,第一次点击总是被忽略(不显示正确的手风琴)。它只在第二次和以后的点击中显示正确的手风琴。 DOM 在我第一次点击时已准备就绪。我不知道还有什么要检查的。有什么想法吗?
编辑:
我现在添加了 console.log 用于进入函数并单击 ViewClient() 函数的元素,发生的情况是每次单击时,我都会收到日志消息“进入”,但是单击仅适用于第二次单击。但奇怪的是,它似乎没有“重置”事件:
entering
entering
clicking 204
clicking 206
entering
clicking 204
clicking 206
clicking 206
entering
clicking 204
clicking 206
clicking 206
clicking 206
请注意,我第二次点击时,点击了不同的 ID (206)。但如果我也单击原始 ID (204),它会做同样的事情。我尝试返回 false 和 preventDefault()。在我看来像是延迟 DOM 更新?
您使用的语法用于初始化手风琴。要更改现有手风琴的设置,您必须使用 option
方法(或 options
如果您想一次更改多个设置)。
$("#accordion").accordion(); // initialize accordion
$('a[id^="contact_show"]').on('click', function (e) {
ShowClientInfo(RelationID);
$('#accordion').accordion("option", "active", 2); // change the active pane
});
您已将两个点击处理程序分配给同一元素。脚本中的那个和标记中的那个都在每次点击时触发。您需要单独初始化手风琴,并且您应该在 jQuery 单击处理程序中调用 ViewClient()
。
我将这段代码与jQueryUI
一起使用function ViewClient(RelationID) {
console.log('entering');
$('a[id^="contact_show"]').on('click', function (e) {
console.log('clicking '+RelationID);
ShowClientInfo(RelationID);
$('#accordion').accordion({active: 2});
});
}
用户单击以执行操作的 link 看起来像这样(位于手风琴的面板 1 上):
<a href="#" id="contact_show_204" onclick="ViewClient(204);">View Client</a>
这应该会关闭面板 1,并打开面板 2。
手风琴初始化如下:
$( "#accordion" ).accordion({
active: false,
heightStyle: "Content",
collapsible: true
});
当我点击其中一个ID时,第一次点击总是被忽略(不显示正确的手风琴)。它只在第二次和以后的点击中显示正确的手风琴。 DOM 在我第一次点击时已准备就绪。我不知道还有什么要检查的。有什么想法吗?
编辑:
我现在添加了 console.log 用于进入函数并单击 ViewClient() 函数的元素,发生的情况是每次单击时,我都会收到日志消息“进入”,但是单击仅适用于第二次单击。但奇怪的是,它似乎没有“重置”事件:
entering
entering
clicking 204
clicking 206
entering
clicking 204
clicking 206
clicking 206
entering
clicking 204
clicking 206
clicking 206
clicking 206
请注意,我第二次点击时,点击了不同的 ID (206)。但如果我也单击原始 ID (204),它会做同样的事情。我尝试返回 false 和 preventDefault()。在我看来像是延迟 DOM 更新?
您使用的语法用于初始化手风琴。要更改现有手风琴的设置,您必须使用 option
方法(或 options
如果您想一次更改多个设置)。
$("#accordion").accordion(); // initialize accordion
$('a[id^="contact_show"]').on('click', function (e) {
ShowClientInfo(RelationID);
$('#accordion').accordion("option", "active", 2); // change the active pane
});
您已将两个点击处理程序分配给同一元素。脚本中的那个和标记中的那个都在每次点击时触发。您需要单独初始化手风琴,并且您应该在 jQuery 单击处理程序中调用 ViewClient()
。