为什么这不起作用?
$(document).ready(function(){
var content = '<a href="http://example.com/index.php><b>Some text!</b></a> - <a href="http://example.com/index.php" class="ot-origin-anchor">News</a>';
$("#test").replaceWith(function(){
return content;
});
//Here is the problem. I don't know why but I can't define adres.
var adres = $("#test .ot-origin-anchor").attr("href");
//find example.com - ugly :P
var adresRegExp = adres.match(/(\w+:\/\/+(www.|))([^/]+)/);
alert(RegExp.$3);
});
</script>
<div id="test">bnb</div>
答案 0 :(得分:6)
.replaceWith()
调用后,页面上没有ID为test
的元素。看起来您打算使用.html()
或.append()
代替.replaceWith()
。
var content = '<a href="http://example.com/index.php><b>Some text!</b></a> - <a href="http://example.com/index.php" class="ot-origin-anchor">News</a>';
$("#test").html(content);
// or
$("#test").append(content);
var adres = $("#test .ot-origin-anchor").attr("href");
答案 1 :(得分:1)
replaceWith
替换应用它的选择中的每个元素。这意味着在替换之后你最终会得到content
。因此,查找#test
的下一个查询将无法匹配。 #test
消失了。你用内容替换了它。
答案 2 :(得分:1)
您正在将#test替换为内容变量,因此选择器未找到具有id test的元素。请改为 $("#test").html(content);
。
更新了jsfiddle:http://jsfiddle.net/sHGrB/
答案 3 :(得分:0)
为什么要用替换?使用jQuery .html()
方法将其添加到DOM,之后,您应该可以轻松地选择它。的 Working Example 强>
答案 4 :(得分:0)
如果替换:
$("#test").replaceWith(function(){
return content;
});
使用:
$("#test").html(content);
你会得到你想要的结果,因为#test不再存在于
答案 5 :(得分:0)
这里有几个问题,一个是replaceWith实际上用#test
替换content
。然后,您的选择器正在查找不存在的#test .ot-origin-anchor
,因为#test
被破坏了。相反,你应该做类似的事情:
$(document).ready(function(){
var content = '<a href="http://example.com/index.php><b>Some text!</b></a> - <a href="http://example.com/index.php" class="ot-origin-anchor">News</a>';
$("#test").html(content);
var address = $("#test .ot-origin-anchor").attr("href");
var addressRegExp = address.match(/(\w+:\/\/+(www.|))([^/]+)/);
alert(RegExp.$3);
});