Javascript jQuery:使用.attr('id','val')更改'id'将不起作用
首先,代码已经简化,只包含基本部分 因此,我有以下HTML文件single_lesson.HTML:Javascript jQuery:使用.attr('id','val')更改'id'将不起作用,javascript,jquery,html,attr,Javascript,Jquery,Html,Attr,首先,代码已经简化,只包含基本部分 因此,我有以下HTML文件single_lesson.HTML: <tr class="my_lessons"> <td> <select name="my_von" id="my_von"></select> </td> </tr> 这行不通,我也不知道为什么。 行控制台.logjQuerymy_html.children.children'my_von
<tr class="my_lessons">
<td>
<select name="my_von" id="my_von"></select>
</td>
</tr>
这行不通,我也不知道为什么。
行控制台.logjQuerymy_html.children.children'my_von';提供以下数组:
[select#my_von, prevObject: e.fn.init[7], context: undefined, jquery: "1.11.1", constructor: function, selector: ""…]
如果我打开这个数组,就会有另一个名为selectmy_von的数组。如果我打开这个,有几个字段和id:my_von就是其中之一。字段id在那里,因此我看不出它不会更改的原因。永远不要使用children.children,尤其是对于可能未知的DOM结构,并且当id查找速度尽可能快时
通常的问题是get结果中有多个顶级元素,或者它不是以开头的有效HTML。谢谢您的评论。我没有意识到jQuerymy_html是一个对象。我解决了这个问题,只需将对象jQuerymy_html存储为一个变量,然后在更改id后将其html内容存储为另一个变量。我的代码如下:
var my_html_jquery = jQuery(my_html);
my_html_jquery.children().children('#my_von').attr('id', 'my_von1');
my_html = my_html_jquery.html();
您将HTML作为字符串获取,然后将其包装为jQuerymy_HTML,然后更改ID,但您没有对jQuery对象执行任何操作,并且原始字符串不会更改,因此再次包装它,您将获得完全相同的输出?您没有更改my_HTML的内容,id将在通过调用jQuerymy_html创建的dom对象中更新,但不会在my中存储的字符串中更新_html@adeneo:这就是我剪切粘贴得到的。。。更正:
jQuery.get('single_lesson.html', function(my_html)
{
var $div = jQuery('<div>').html(my_html);
$div.find('#my_von').attr('id', 'my_von1');
// Now do whatever you want to do with $div.html() or $div.children();
}, 'html');
var my_html_jquery = jQuery(my_html);
my_html_jquery.children().children('#my_von').attr('id', 'my_von1');
my_html = my_html_jquery.html();