【问题标题】:Open Link in New Tab on Button Active在按钮活动的新选项卡中打开链接
【发布时间】:2012-10-04 03:45:56
【问题描述】:

我试图在我的网站上有一个按钮,当它处于活动状态时(单击一次)将目标 _blank 添加到具有特定类的 href 链接,以便它们在新选项卡中打开。

这是按钮的代码

    <li id="toolbar-display">
        <dl>
        <dt>Display</dt>
        <dd id="toolbar-display-newtab" class="first last"><span>New Tab</span></dd>
        </dl>
    </li>

那么这是一个href链接类,我想将_blank添加到。

    <a class="item-link" href="url">

为此,我使用了以下从 http://jsfiddle.net/UJMgQ/2/ 修改的 javascript

    <script type="text/javascript">
        $(function () {
        $('#toolbar-display-newtab').click(function () {
        if ($(this).toggleClass('active')) {
        $('.item-link').attr('target', '_blank');
        } else {
        $('.item-link').removeAttr('target');
        }
        });
        });
    </script>

代码看起来是正确的,但不幸的是它不起作用,我目前不清楚它是没有检测到按钮的活动状态还是无法添加_blank。任何帮助将不胜感激 =)

【问题讨论】:

  • 它对我来说似乎工作得很好。
  • 嗯.. 奇怪它在我的网站上不起作用。 _blank 是否仅在按下按钮时添加?因为我认为单击 1 次后该按钮将被视为“活动”。然后再次点击“非活动”。

标签: javascript html css


【解决方案1】:

我不完全确定 toggleClass() 返回什么,但根据我的测试,它没有为您提供可用于 if else 条件的布尔值。

为什么不试试hasClass() 来检测是否已经设置了活动类,然后在检测到之后使用toggleClass。

我尝试重新编写你的帖子,但我不确定你的逻辑是否正确。

$(function () {
    $('#toolbar-display-newtab').click(function () {
        if ($(this).hasClass('active')) {
            $('.item-link').attr('target', '_blank');
        } else {
            $('.item-link').removeAttr('target');
        }
        $(this).toggleClass('active');
    });
});

【讨论】:

  • 好吧,当您单击该函数时,它似乎没有被调用。虽然查看生成的源代码,但似乎存在一个冲突的 JQuery 问题。我想您也需要将其应用于我给您的代码。为此,只需将所有 $ 替换为 jQuery 示例:jQuery('#toolbar-display-newtab')
  • 在这里,我将添加一个屏幕截图,以更好地解释我正在尝试做的事情。 i.imgur.com/NpyJH.jpg
  • 啊,当我替换我的帖子时,你回复了 =) 好的,我将 $(function () 更改为 jQuery(function ($) 这样我就不必更改所有的 $。它可以工作现在 =) 但是浏览器似乎不记得新标签上的活动状态。按钮仍然是蓝色的,但是在我再次单击“新标签”按钮之前,链接不会在新标签中打开。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-25
  • 1970-01-01
相关资源
最近更新 更多