简体   繁体   English

无法访问jQuery创建的元素

[英]Unable to access element created by jQuery

After the creation of a new element in my list, I want to insert content into it. 在列表中创建新元素后,我想在其中插入内容。 I know I could do this while creating, but the problem is that I cannot interact with the element after creation. 我知道我可以在创建时执行此操作,但是问题是创建后无法与该元素进行交互。

 var buttoncounter = 5; for (i = 0; i <= (newtrack_information.length - 1); i++) { $("#tracklist").append("<li class=\\"ui-state-default ui-sortable-handle\\"><span><a id=" + buttoncounter + "\\" href=\\"#\\"></a></span></li>"); $("#" + buttoncounter).html(newtrack_information[i].trackname + " - " + newtrack_information[i].artist); buttoncounter++; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <ol id="tracklist"> <li class="ui-state-default"><span><a id="0" href="#"></a></span> </li> <li class="ui-state-default"><span><a id="1" href="#"></a></span> </li> <li class="ui-state-default"><span><a id="2" href="#"></a></span> </li> <li class="ui-state-default"><span><a id="3" href="#"></a></span> </li> <li class="ui-state-default"><span><a id="4" href="#"></a></span> </li> </ol> 

If I try to find the respective element with 如果我尝试找到与

console.log($(document.body).find("#" + buttoncounter));

I get this: 我得到这个:

[prevObject: m.fn.init[1], context: body, selector: "#tracklist #5"]

EDIT: Also, if I try to change the selector to "#tracklist #5" - it doesn't work either. 编辑:另外,如果我尝试将选择器更改为“ #tracklist#5”,则也将不起作用。

I think you've missed a " in your code. Use ...id=\\"" + instead of ...id=" + . 我认为您在代码中错过了一个" 。请使用...id=\\"" +代替...id=" + To avoid that, I recommend to use both single quotations ' and double quotations " in the code like: 为避免这种情况,我建议在代码中同时使用单引号'和双引号"

  $('#tracklist').append('<li class="ui-state-default ui-sortable-handle"><span><a id="' + buttoncounter + '" href="#"></a></span></li>');

After altering that, you can add items from newtrack_information to your list. 更改之后,您可以将newtrack_information中的项目添加到列表中。

 var buttoncounter = 5; var newtrack_information = [ {trackname: 1, artist: 'bob' }, {trackname: 2, artist: 'jason' }, ] for (i = 0; i <= (newtrack_information.length - 1); i++) { $("#tracklist").append("<li class=\\"ui-state-default ui-sortable-handle\\"><span><a id=\\"" + buttoncounter + "\\" href=\\"#\\"></a></span></li>"); $("#" + buttoncounter).html(newtrack_information[i].trackname + " - " + newtrack_information[i].artist); buttoncounter++; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <ol id="tracklist"> <li class="ui-state-default"><span><a id="0" href="#"></a></span> </li> <li class="ui-state-default"><span><a id="1" href="#"></a></span> </li> <li class="ui-state-default"><span><a id="2" href="#"></a></span> </li> <li class="ui-state-default"><span><a id="3" href="#"></a></span> </li> <li class="ui-state-default"><span><a id="4" href="#"></a></span> </li> </ol> 

You are not changing the value of buttoncounter. 您没有更改buttoncounter的值。 It will always insert your values into the same id. 它将始终将您的值插入相同的ID。

var buttoncounter = 5;
for (i = 0; i <= (newtrack_information.length - 1); i++) {
  $("#tracklist").append("<li class=\"ui-state-default ui-sortable-handle\"><span><a id=" + buttoncounter + "\" href=\"#\"></a></span></li>");
  $("#" + buttoncounter).html(newtrack_information[i].trackname + " - " + newtrack_information[i].artist);
  buttoncounter = buttoncounter - 1;
}

Try the below one see if it is solving your problem.. 请尝试以下一种,看看它是否可以解决您的问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM