2013-02-06 243 views
4

我想创建使用jquery的元素。当我点击一个链接时,我想创建一个元素“p”,给它一些文本,然后把它放在我的一个div中。此外,我想检查哪个链接被点击,所以我可以把创建的“p”在正确的div。任何解决方案,我在哪里做错了?使用jquery动态创建元素

使用Javascript/jQuery的

$(document).ready(function() { 

function createElement() { 
    var a = $("#menu").find('a').each(function(){ 
    if(a == "l1"){ 
    var text = $(document.createElement('p'); 
    $('p').text("Hej"); 
    $("#contentl1").append("text"); 
    } 
    }); 
} 

$("#menu").find('a').each(function() { 
    $(this).click(function() { 
     createElement(); 
    }); 
}); 

createElement(); 

}); 

HTML

 <html> 

<head> 
<title>Inl1-1</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<link rel="stylesheet" type="text/css" href="style-1.css"> 
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> 
<script type="text/javascript" src="Uppg1.js"></script> 
</head> 

<body> 

<ul class="meny" id="menu"> 
<li><a href="#" id="l1">Utvärdering/Feedback</a></li> 
<li><a href="#" id="l2">Kontakt</a></li> 
<li><a href="#" id="l3">Öppettider</a></li> 
<li><a href="#" id="l4">Om Asperöd</a></li> 
</ul> 

<div id="contentl1"> 

</div> 

<div id="contentl2"> 

</div> 

<div id="contentl3"> 

</div> 

<div id="contentl4"> 

</div> 

</body> 

</html> 
+0

首先,你..'变种文字= $(使用document.createElement(“P”);'错过 – Dimser

+0

您使用的是可变的右括号中的条件,其返回值,应该说在函数内部变量?var a = $(“#menu”)。find('a')。each(function(){if(a ==“l1”){ – Simon

回答

13

这里是用文字添加新<p>元素“HEJ”#contentl1的最佳方式使用jQuery:对于开始点击功能可以这样做具有代替

$("<p />", { text: "Hej" }).appendTo("#contentl1"); 
2
function createElement() { 
    var a = $("#menu").find('a').each(function(){ 
    if(a == "l1"){ 
    var p = $("<p>"); 
    p.text("Hej"); 
    $("#contentl1").append(p); 
    } 
    }); 
} 
1

我知道这并不realate来回答你的问题,但它是很难离开这个作为一个评论:

var a = $("#menu").find('a').each(function(){ <-- this "a" will only be created after the each completes 
    if(a == "l1"){ <-- this "a" that you are verifying is a global variable 
    var text = $(document.createElement('p'); 
    $('p').text("Hej"); 
    $("#contentl1").append("text"); 
    } 
    }); 

您可以尝试以解决您的问题:

function createElement() { 
    if($(this).attr("id") == "l1"){ 
    $("#contentl1").append('<p>hej</p>'); 
    } 
} 

$("#menu a").each(function() { 
    $(this).click(function() { 
     createElement.apply(this); 
    }); 
}); 
1

使用.find():

$('#menu a').click(function() { } 

的。每()循环可以像做

$('#menu a').each(function() { 
    var aId = $(this).attr('id'); 
    var contentId = content + aId; 
    $(contentId).append('<p>Hej</p>'); 
}) 
0

类似于this fiddle

$('#menu').on('click', 'a', function(e) { 
    e.preventDefault(); 
    $('<p>').text($(this).text()).appendTo('#content'+this.id); 
}); 
0

试试这个脚本,它会把文本放在正确的div

$(document).ready(function() { 

$("#menu").find('a').each(function() { 
    $(this).on('click',function() { 
     $("#content"+$(this).attr("id")).append("<p>link "+$(this).attr("id")+" is clicked</p>"); 
    }); 
}); 


});