为什么jQuery选择器不起作用?

时间:2011-08-22 18:21:53

标签: javascript jquery

为什么这不起作用?

        $(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>

6 个答案:

答案 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);
});