2017-08-29 32 views
1

我有這個功能使用jQuery的元素ID作爲函數的參數作爲選擇

function doSomething(elementID) { 

    $("div").append("<p id='"+ elementID +"'> A paragraph</p>"); 

    /* this part is incorrect since it will 
     use the selector whose id is "elementID" and not the parameter passed. */ 

    $("p#elementID").css("color", "red"); 
} 

我想要做這樣的事情,但是這顯然是不正確。如何使用或存儲使用ID參數的選擇器?

像這樣的東西(但這是不正確太):

var x = $("# '"+elementID+"); 

回答

3

有兩種方法可以做到這一點。第一種方法是使用字符串連接 - 完全按照你已經這樣做了創建該元素時:

function doSomething(elementID) { 
    $('div').append('<p id="' + elementID + '"> A paragraph</p>'); 
    $('p#' + elementID).css('color', 'red'); 
} 

第二,進一步優選IMO,是保持對元素的引用,那麼你創建的使用,在第二個語句與appendTo()

function doSomething(elementID) { 
    $('<p id="' + elementID + '"> A paragraph</p>').css('color', 'red').appendTo('div'); 
} 

另外請注意,這將是更好的做法是使用一個CSS類設置元素的color。應儘可能避免使用css(),因爲它將UI和JS代碼緊密聯繫在一起。

1

請檢查下面的例子。 你需要只是改變:

$("p#elementID").css("color", "red"); 

$("p#"+ elementID).css("color", "red"); 

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
<script> 
 
$(document).ready(function(){ 
 
    var elementID = "myid"; 
 
    $("div").append("<p id='"+ elementID +"'> A paragraph</p>"); 
 

 
    /* this part is incorrect since it will 
 
     use the selector whose id is "elementID" and not the parameter passed. */ 
 

 
    $("p#"+ elementID).css("color", "red"); 
 
}); 
 
</script> 
 
</head> 
 
<body> 
 
<div> 
 
</div> 
 

 
</body> 
 
</html>

希望這將是對你有幫助。

相關問題