2011-08-22 204 views
0

爲什麼這不起作用?爲什麼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> 
+0

你有什麼要完成,如果你想定義鏈接到的div我認爲這是錯誤的 – Jorge

+0

我試圖改變「新聞」變成「example.com」? (內容來自Google Buzz)。 – Isinlor

回答

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

replaceWith替換它所應用的選擇中的每個元素。這意味着在替換之後你最終只會得到content。因此,您的下一個查詢,查找#test將無法​​匹配。 #test不見了。你用內容取代了它。

1

您正在用您的內容變量替換#test,因此選擇器未找到id爲test的元素。改爲嘗試$("#test").html(content);

更新的jsfiddle:http://jsfiddle.net/sHGrB/

+0

在你的例子中只有「新聞」,應該是「一些文字! - 新聞」。 – Isinlor

+0

您錯過了第一個定位標記中的報價。更新:http://jsfiddle.net/sHGrB/2/ – Dennis

+0

是的,非常感謝! :D – Isinlor

0

爲什麼使用與更換?使用jQuery .html()方法將其添加到DOM,之後,您應該可以輕鬆地選擇它。 Working Example

+0

我不知道爲什麼,但是當我在.html()之前嘗試銷燬我的內容時,無論如何謝謝。 – Isinlor

+0

@Non'.replaceWith()'比** .html()更具破壞性**。 –

+0

@Matt更具破壞性?!超過9000!!!! '' –

0

如果更換:

$("#test").replaceWith(function(){ 

      return content; 

     }); 

有:

$("#test").html(content); 

你會得到你想要的結果,因爲#TEST不再存在,代之以

0

有幾個問題這裏有一個是replaceWith實際上是用content代替#test。然後,你的選擇器正在尋找不存在的#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); 
});