2017-03-06 16 views
0

我有一個動態添加圖像的文本。我希望在用戶將圖片懸停在圖片上時,文字內的單詞會更改背景。如何更改動態創建的div懸停在其他元素上?

例如我有ID爲a1,a2,a3 ....的圖像以及帶ID爲b1,b2,b3,... 的跨文本目標 - 當用戶懸停a1時,b1跨度文本會更改背景等等

我發現這個功能可以是有用的,但我不知道如何使它動態。

$(function() { 
    $('#a').hover(function() { 
    $('#b').css('background-color', 'yellow'); 
    }, function() { 
    // on mouseout, reset the background colour 
    $('#b').css('background-color', ''); 
    }); 
}); 

實施例:

Þeir, sem á <span class="amatic" id="b1">skipinu</span> voru, <span class="amatic" id="b2">sáu</span> ... Voru strendur hennar <span class="amatic" id="b6">háar</span> og sæbrattar 

<br> 
<img src="images/size_320/lod.jpg" alt="skip" id="a1"> 
<img src="images/size_320/videt.jpg" alt="sjá" id="a2"> 
<img src="images/size_320/vlasy.jpg" alt="hár" id="a6"> 
+0

所以你只需要改變背景。 – dekts

+0

我擁有可變數量的圖像 - 將鼠標懸停在它們上方時,它會更改可變量文本的背景。我需要覆蓋所有圖像的懸停行爲的函數(可以是4,也可以是1000)。 – chejnik

+0

好吧,那麼爲什麼你不爲所有跨度創建動態ID(如果你有一個跨度你想懸停),然後在使用jQuery獲取ID之後,$('。tags')。mouseover(function(){ alert(this.id); });' 然後將此ID傳遞給您開發的JS代碼。 – dekts

回答

1

可以分配一個新的{屬性}一定元件(無論是發生在{IMG}或{跨度}該屬性)。

<div class="wrapper"> 
    <img src="https://cdn.pixabay.com/photo/2015/04/19/08/33/flower-729513_960_720.jpg" id="a1" /> 
    <span class="text" data_current_bg="" id="text1"> Text 1 </span> 
</div> 
<div class="wrapper"> 
    <img src="https://cdn.pixabay.com/photo/2016/10/03/17/11/cosmos-flower-1712177_960_720.jpg" id="a2" /> 
    <span class="text" data_current_bg="" id="text2"> Text 2 </span> 
</div> 
<div class="wrapper"> 
    <img src="https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcRqysRONV6q1elD6x4WJRe_6X5oIswrNXMDByxkNkij8xPWjRECkg" id="a3" /> 
    <span class="text" data_current_bg="" id="text3"> Text 3 </span> 
</div> 

在這個例子中,我們分配在稱爲[data_current_bg]中的[跨度]元素的新屬性。

然後從你的JS內。您可以分配您爲每個值分配的值。

var oWrapperImages = $('.wrapper img'); 

oWrapperImages.each(function() { 
    // Find every {span} elements next to {img} tags 
    // Assuming you set each text's bg color in css 
    var oSpanTexts = $(this).parent().find('.text'); 

    // On loading ths js, Assign the default bg color of each texts 
    var sBackgroundColor = oSpanTexts.css('background-color'); 
    $(this).attr('data_current_bg', sBackgroundColor); 
}); 

然後,你可以參考這個,只要你想在過程

oWrapperImages.hover(function() { 
    var oSpanTexts = $(this).parent().find('.text'); 
    var sCurrentBGColor = $(this).attr('data_current_bg'); 
    oSpanTexts.css('background-color', sCurrentBGColor); 
}, function() { 
    // rest of code 
}); 

這裏檢測到「懸停」事件是對你的jsfiddle進一步參考:http://jsfiddle.net/k0o1exmf/

希望這有助於

編輯

您也可以分配索引。在這個問題的情況下,我們可以根據最後一個索引(例如'image1')更改[span]文本的bg顏色

在這種情況下,我們將從該圖像中獲取'1'。然後將其附加到文本('文本')。

請注意,考慮到您想分開[img]和[span]標籤,這可能有點冒失。

的jsfiddle: http://jsfiddle.net/ozd7y8av/

希望這有助於。

+0

這是真的嗎?你的答案span文本必須直接跟在img上?在那種情況下,目標沒有實現。圖像在文本之後排序。 – chejnik

+1

這僅供參考。您可以將[span]和[images]分別放在您的示例html上給出的名稱中,並通過引用將其命名爲: var sSpanTexts = $('。span-text')。attr('id'); //例如text1 var sImages = $('。images')。attr('id'); //例如image1。 然後替換'text'短語以獲得數值'1'(例如sSpanTexts.replace('text',''))。然後引用它爲您的圖像標記,連同你的'圖像',然後數字值。 (例如圖片+ 1) 同樣從那裏,您可以傳遞文本的「顏色值」。由你決定如何使用它 – eeya

+0

我想你是對的。但我無法從您的評論中找出解決方案。你能縮小問題需求的答案嗎? – chejnik

相關問題