什么';编写通过JavaScript而不是纯HTML解析的链接的最佳方法是什么?(jQuery选项卡)

什么';编写通过JavaScript而不是纯HTML解析的链接的最佳方法是什么?(jQuery选项卡),javascript,jquery,onclick,jquery-ui-tabs,Javascript,Jquery,Onclick,Jquery Ui Tabs,我正在使用一个Wordpress.org网站和一个jQueryTabs插件,每个页面总共有10篇文章,每篇文章都有自己的jQueryTab设置 因此,对于Post 1,标签被标记为#tabs-1-1、#tabs 1-2等 Post 2选项卡为#选项卡2-1、#选项卡2-2等…每个选项卡集都有唯一的id 对于每个帖子,我在标签1中都有一个buy now按钮,它链接到标签4,显示产品的购买选项。我正在尝试找出是否可以使用此代码跳转到选项卡4: 职位1: <a onclick="$('a[hre

我正在使用一个Wordpress.org网站和一个jQueryTabs插件,每个页面总共有10篇文章,每篇文章都有自己的jQueryTab设置

因此,对于Post 1,标签被标记为#tabs-1-1、#tabs 1-2等

Post 2选项卡为#选项卡2-1、#选项卡2-2等…每个选项卡集都有唯一的id

对于每个帖子,我在标签1中都有一个buy now按钮,它链接到标签4,显示产品的购买选项。我正在尝试找出是否可以使用此代码跳转到选项卡4:

职位1:

<a onclick="$('a[href=#tabs-1-4]').click();">BUY NOW</a>

职位2:

<a onclick="$('a[href=#tabs-2-4]').click();">BUY NOW</a>

职位3:

<a onclick="$('a[href=#tabs-3-4]').click();">BUY NOW</a>

等等等等。onclick会在每页上出现10次。我已经读到内联javascript不好,这导致我创建这篇文章,因为我想使用最好/最安全的方法

我读过一篇文章,正确的方法是将函数放在一个js文件(不引人注目的javaScript)中,并使用id调用它,但由于每次单击都会转到一个不同的选项卡哈希,我不知道该方法是否有效,或者如何使其有效。我总共有400多篇文章,所以我会在js文件中编写400个不同的函数吗

然后是一个问题,如果可以使用它,那么使用哪个链接:

<a onclick="$('a[href=#tabs-1-4]').click();">BUY NOW</a>
<a href="javascript:void(0)" onclick="$('a[href=#tabs-1-4]').click();">BUY NOW</a>
<a href="#" onclick="$('a[href=#tabs-2-4]').click(); return false;">BUY NOW</a>

如果你想成为一名花花公子并支持html5,我可能会让每个链接都类似于此:

<a class="tabLink" data-href="#tabs-1-4">BUY NOW</a>
<a class="tabLink" data-href="#tabs-2-4">BUY NOW</a>
如果没有自定义属性支持,您可以使用href而不是data href,并使用href,这样就不太一样了


这背后的想法是使代码尽可能短,并将数据(在HTML中链接的地方)与行为(在脚本中如何使链接工作)分离开来。

您尝试过吗?没关系,只是试过而已。这个问题的可能重复之处在于方法,而不是链接本身的最佳语法。不过,在侧边栏中有很多相关的讨论。例如:我的收藏夹中有这两篇帖子:)我三天前才开始阅读javascript,所以我肯定是个书呆子,只是想把我的脑袋绕过去。我的问题是我有很多不同的标签散列,每个onclick都需要指向一个唯一的标签散列。所以每个标签散列(即tabs-1-4)都将替换#fragment-1?对于脚本,一个脚本是否适用于所有选项卡链接?我有点困惑。也就是说:
$('a.tabLink')。单击(function(){var href=$(this.data('href');$('a[href='+href+'])。单击();返回false;})有点像这样是的,让我修改一下。当我点击buy now按钮时,它没有做任何事情,可能实现了错误:(js文件在这里)嗯。首先,我没有看到点击处理程序被触发,这有点奇怪。其次,您必须将“.selector”更改为您的制表符元素。我会选择$('a[href='+href+']);现在,只是权宜之计,我真的让它工作了。该插件强制使用标签的id名称,所以我只是删除了该插件并手动添加了jquery标签,这样我就可以选择id名称了。现在效果很好。我将很快再次查看您的代码,现在我使用的是直接的jquery选项卡,应该可以正常工作。
var jqTabHost = ".whateverTheNameOfYourTabElementIs";
$('a.tabLink').click(function() {
    //Something like (not sure exactly):
    var href = $(this).data('href');
    //EITHER
    $('a[href=' + href + ']').click();
    //OR (better)
    $(jqTabHost).tabs( "load", href.substring(1) );
    return false;
});