Jquery - 通过id在string中构造id来获取元素

Sam*_*tt 14 javascript jquery

我在使用带有jquery的元素时遇到了麻烦.我在var中构造名称,例如:

var myId = "#" + myGotId;

$(myId).attr("title", "changed");
Run Code Online (Sandbox Code Playgroud)

$(myId)返回空.我希望通过id获取我的元素,但构建我的Id动态加入字符串.

由@Pointy编辑 - OP在评论中提供的附加代码:

var form = $('form#formDefaultValue');
$(':submit', form).click(function(event) {
  event.preventDefault();
  $.post(form.attr('action'), form.serialize(), function(data, status, XMLHttpRequest) {
    if (status == 'success') {
      $("#msgInformation").html("Your changes have been successfully saved.");
      jQuery("#spanDefaultValue").attr("class", "db");
      var g = indexNodeSelected;
      g = g.replace("\\", "\\\\\\\\");
      $('#'+ g).find("span").attr("class", "");
   } 
Run Code Online (Sandbox Code Playgroud)

Poi*_*nty 22

我不确切知道发生了什么,因为你没有发布很多代码,但确保你的Javascript代码在DOM中包含目标"id"值的元素之后运行.如果你有这个:

<html>
  <head>
    <script>
      var myId = '#' + myGotId;
      $(myId).whatever();
Run Code Online (Sandbox Code Playgroud)

然后这将无法工作,因为代码运行时将不会看到实际的页面.

相反,试试这个:

  <script>
    $(function() {
      var myId = '#' + myGotId;
      // ...
    });
Run Code Online (Sandbox Code Playgroud)

确保您的"myGotId"字符串正是您期望的值(即,编码到目标元素的"id"属性中的值)也很重要.

编辑如果您认为您正确构建了"id",那么您可以尝试将其作为替代方案:

$(document.getElementById(myGotId)).whatever()
Run Code Online (Sandbox Code Playgroud)

换句话说,只需传递给$()函数,就可以将一个普通的DOM元素"包装"在jQuery对象中.如果这样做,那么问题可能是你的"id"值在某种程度上混淆了选择器引擎."id"值是否包含"." 在任何情况下?