jquery - 停止传播到jQuery UI选项卡并关注链接

时间:2018-04-10 16:19:48

标签: jquery-ui jquery-ui-tabs stoppropagation

如果之前被问到这个问题,我会道歉 - 我搜查了一下,但没有发现任何与我所看到的完全匹配的内容。

情况就是这样:我正在使用jQuery UI选项卡来选择页面上的图像。对于其中一个选项卡,所需的结果是按照该选项卡的链接,打开一个新的浏览器选项卡(我将尝试直接使用单词“tab”),并忽略其余的UI标签代码。所以基本上我希望Tabs创建可视选项卡以供选择,但不执行任何常见的jQuery处理,只需点击该特定选项卡即可。对于其他选项卡,默认的UI选项卡行为很好。

我想我可以做的是将一个事件附加到该选项卡并调用event.stopPropagation(),这将阻止冒泡到UI代码,然后让它通过并获取链接(选项卡的单击事件是在'a'标签上)。我确实设置了它,以便我的事件代码排在第一位,它在UI代码之前执行,并且它阻止了UI代码的运行。

但是,如果我这样做,我会在控制台中看到以下消息:

  

阻止跨源请求:同源策略不允许在[link]处读取远程资源(原因:缺少CORS头“Access-Control-Allow-Origin”)。

(注意:链接指向不同域中的交互式页面,这是我打开新浏览器标签的主要原因)

新的浏览器标签页面未打开,我选择了以下空白内容的选项卡。

如果我在stopPropagation之前为链接执行“window.open”并添加event.preventDefault(),我会在新的浏览器选项卡中获得页面打开的结果,但仍然会看到错误消息。由于一些肥胖的手指,我也注意到如果我在点击事件代码中有一个未定义的函数,它也有所需的反应。

无论如何,有什么蠢事,我没有在这里看到吗?我是否应该对能够产生最终行为的解决方案感到满意,但是会出现错误消息?

非常感谢!

1 个答案:

答案 0 :(得分:0)

因为我怀疑我这样做是错的。将它归结为jQuery UI新手。

UI提供了一个beforeActivate()事件,它完全符合我的要求。在函数中,我可以查看建议的新Tab是否具有我指定的类别“跳转到链接”,执行窗口调用以创建新的浏览器选项卡,然后返回false以便UI知道我不知道不要激活Tab。否则该函数返回true。