Jquery打开此链接而不是其他链接

时间:2016-01-21 16:03:06

标签: javascript jquery html

所以,我有一系列div,每个div里面都有一个链接。

我想要完成的是在另一个窗口中打开或打开.pdf文件,如果链接以.pdf结尾,如果没有做任何事情或其他事情稍后决定。

我遇到的问题是当你点击链接时,它会打开同一个文档,就像你在页面上有.pdfs一样。

我尝试在这个小提琴中复制问题:

https://jsfiddle.net/x9fo6cgk/

但它不起作用。代码在我这边工作。

以下是代码:

    $('.somelink').click(function(eventObject) {
      var elem = $(this);
      if (elem.attr("href").match(/\.pdf$/i)) {
        eventObject.preventDefault();
        elem.attr('target', '_blank');
      }
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="linkholder">
      <a class="somelink" href="https://bitcoin.org/bitcoin.pdf">pdf 1</a>
    </div>

    <div class="linkholder">
      <a class="somelink" href="http://www.pdf995.com/samples/pdf.pdf">pdf 2</a>
    </div>

    <div class="linkholder">
      <a class="somelink" href="http://www.bing.com">.com</a>
    </div>

    <div class="linkholder">
      <a class="somelink" href="http://www.google.org">.org</a>
    </div>

提前致谢!

3 个答案:

答案 0 :(得分:0)

如果它们是PDF,您应该只更改页面加载的目标。

$('.somelink').each(function() {
  var elem = $(this);
  if (elem.attr("href").match(/\.pdf$/i)) {
    elem.attr('target', '_blank');
  }
});

JSFiddle: https://jsfiddle.net/x9fo6cgk/3/

此HTML中的结果:

<div class="linkholder">
  <a class="somelink" href="https://bitcoin.org/bitcoin.pdf" target="_blank">pdf 1</a>
</div>
<div class="linkholder">
  <a class="somelink" href="http://www.pdf995.com/samples/pdf.pdf" target="_blank">pdf 2</a>
</div>
<div class="linkholder">
  <a class="somelink" href="http://www.bing.com">.com</a>
</div>
<div class="linkholder">
  <a class="somelink" href="http://www.google.org">.org</a>
</div>

注意:你的JSFiddle没有选择jQuery,所以没有运行。

答案 1 :(得分:0)

你可以这样做:

$('.somelink').click(function(eventObject) {
   var elem = $(this);
   if (elem.attr("href").match(/\.pdf$/i)) {
   eventObject.preventDefault();
   window.open(elem.attr('href'));
  }
});

请看这里:https://jsfiddle.net/x9fo6cgk/6/

答案 2 :(得分:0)

由于某种原因,这个脚本的行为:

https://learn.jquery.com/events/event-basics/#preventdefault

在Magnolia CMS下的行为有点奇怪。

所以改为使用了这段代码:

$(".linkholder a[href$='pdf']").attr('target','_blank').addClass('pdf');
$(".linkholder a:not(a[href$='pdf'])").addClass('generic');

这是一个小提琴:

https://jsfiddle.net/x9fo6cgk/13/

谢谢大家!