2014-08-27 169 views
-5

我有以下的html代碼:使用span標籤來改變DIV的背景色的onclick

<div id="parent" style="background-color:#FFFFFF"> 
    <ul>  
     <li><span data-color="red">Text 1</span></li> 
     <li><span data-color="blue">Text 2</span></li> 
     <li><span data-color="yellow">Text 3</span></li> 
    </ul> 
    </div> 

如果我點擊具體<span>,股利父母的背景顏色應該改變。

這是如何使用jQuery完成的?

我已經試過這樣:

$('ul li span').click(function(){ 
    $('.parent').css('background-color', $(this).data-color); 
}); 
+0

其中你面對你的JS代碼和哪些問題? SO不是代碼寫作服務,你需要先嚐試一下自己 – RAJ 2014-08-27 16:02:10

+0

我還沒有,我很新jquery – 2014-08-27 16:02:50

+0

多數民衆贊成在你們認爲我想要的代碼非常粗魯......我想要像「你應該嘗試使用類或數據顏色的跨度來做到這一點,這「不是代碼... – 2014-08-27 16:04:46

回答

4

使用香草的JavaScript(無庫):

//We attach a click handler on the nearest common parent. 
//This allows us to have only one event handler, which is better 
//For performance! 
document.getElementById("parent").onclick = function(e) { 
    //We only want events on the spans, so let's check that! 
    if (e.target.tagName.toLowerCase() == "span") { 
     this.style.backgroundColor = "#BADA55"; 
     //This is for the sake of example only! 
     //TODO: A better approach would be to add a class 
     //And define a CSS rule for that class. 
    } 
}; 

或者不通訊已廢除

document.getElementById("parent").onclick = function(e) { 
    if (e.target.tagname.toLowerCase() == "span") { 
     this.style.backgroundColor = "#BADA55"; 
    } 
}; 

以上的等效使用jQuery:

$("#parent").on("span", "click", function() { 
    $("#parent").css({backgroundColor: "#BADA55"}); 
}); 

Example

-3
$('ul li span').on('click',function(){ 
    $(this).closest('div').css('background-color',$(this).data('color')); 
}) 

<div id="parent" style="background-color:#FFFFFF"> 
<ul>  
    <li><span data-color='red'>Text 1</span></li> 
    <li><span data-color='yellow'>Text 2</span></li> 
    <li><span data-color='green'>Text 3</span></li> 
</ul> 

這裏是演示http://jsfiddle.net/k6t80zsg/3/

+0

我想向他展示最接近方法的用法。我們可以直接使用id來改變顏色。但如果他有多個相同結構的元素,我更喜歡最接近的方法那就是爲什麼舉例 – Jagadeesh 2014-08-27 16:10:05

+0

您的評論是有用的,謝謝 – 2014-08-27 16:13:38