使用jQuery更改目标属性

时间:2016-05-24 04:09:30

标签: javascript jquery html

我在向dom附加一些内容后尝试将target="_new"添加到每个a标记但我没有成功。

请运行代码段,然后点击“ Go CORS Go ”,等待内容完全加载并尝试点击鸭子。尽管是a标记,但新属性似乎不起作用。任何见解?

var url = encodeURIComponent("https://duckduckgo.com/");
$("button").click(function() {
  $.getJSON('http://anyorigin.com/get/?url=' + url + '&callback=?', function(data) {
    var cors = data.contents;
    $("body").append(cors);
    $('body a').each(function() {
      $(this).attr('target', "_blank");
    });
  });
});
<!DOCTYPE html>
<html>
<head>
  <base href="https://duckduckgo.com/" />
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
</head>
<body>
  <button>Go CORS Go</button>
</body>
</html>

4 个答案:

答案 0 :(得分:1)

在追加

之后编辑ajax结果而不是页面结果

尝试以下方法:

  var newcors = $(cors).find('a').attr('target', "_blank").end();
$('body').append(newcors);

答案 1 :(得分:1)

ajax返回的响应有一个导致错误的脚本,ReferenceError: DDG is not defined(…)将在ReferenceError

之后执行语句

.append语句放在try..catch中,因此错误不会影响以后的脚本。

&#13;
&#13;
var url = encodeURIComponent("https://duckduckgo.com/");
$("button").click(function() {
  $.getJSON('http://anyorigin.com/get/?url=' + url + '&callback=?', function(data) {
    var cors = data.contents;
    try {
      $("body").append(cors);
    } catch (Exception) {
      console.log(Exception);
    }
    $('body a').attr('target', "_blank");
  });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<button>Go CORS Go</button>
&#13;
&#13;
&#13;

更新:根据评论中的建议,.attr( attributeName, value ) 为匹配元素集设置一个或多个属性,因此无需迭代a元件。

答案 2 :(得分:1)

我假设所有a元素都存储在cors

您可以在将目标追加到body之前设置目标。

<强> E.g

$("button").click(function() {
  $.getJSON('http://anyorigin.com/get/?url=' + url + '&callback=?', function(data) {
    var $cors = $(data.contents);
    $cors.find('a').attr('target', '_blank');
    $('body').append($cors);
  });
});

答案 3 :(得分:0)

试试这条简单的

<强>旧

  $("body").append(cors);
  $('body a').each(function() {
        $(this).attr('target', "_blank");
   });

<强>更新

 $("body").append(cors).find("a").attr('target', "_new");