2013-05-03 117 views
0

我使用以下腳本根據輸入的值更改圖像。jquery替換圖像問題

var siteLogo = $('input#site-logo').val(); 
$('#site-logo, img').attr("src", siteLogo); 

HTML

<div id=site-logo> 
<img src="default.png" width="285px" height="100px"> 
</div> 

<input id="site-logo" class="input-xlarge" placeholder="http://" type="text"> 
<button id="add-site-logo" class="btn" href=""> Add</button> 

我的問題是,它正在改變ALL圖像在頁面上的網站標識的值。我該如何做到這一點,只有站點徽標中的值得到改變,而不是頁面上的其他隨機東西?

+3

id應該是唯一的。這裏使用了id =「site-logo」兩次。 – vinothini 2013-05-03 14:57:39

+2

不要使用輸入#站點徽標選擇器,它比#站點徽標更慢。 – kirugan 2013-05-03 14:59:11

+0

[記錄自己,記錄自己](http://www.w3.org/TR/selectors/#grouping) – MisterJ 2013-05-03 15:00:05

回答

1

從jQuery選擇

$('#site-logo img').attr("src", siteLogo); 

$('#site-logo img')刪除 '' 裝置內部#site-logo所有圖像

$('#site-logo, img')裝置#site-logo加上所有圖像。

1

試試這個:

$('img','#site-logo') 

或者更好:

$('#site-logo').find('img') 
2

有兩個問題在這裏:

  • 您有兩個元素設置的id字段。它應該是獨一無二的。
  • 您正在使用的選擇器會選擇多種東西:#site-logo選擇器選擇一個具有site-logo ID的項目,img選擇頁面上的所有圖像。選擇器中的逗號基本上定義了所有選擇器中的「或」;如果它匹配#site-logo它將匹配img

您選擇改成這樣:

$("#site-logo img").attr("src", siteLogo); 

你會希望有一個不同的ID在這種情況下,您的<input>標籤。