首先,代码已经简化,只包含必要部分。
所以我有以下HTML文件(single_lesson.html):
<tr class="my_lessons">
<td>
<select name="my_von" id="my_von"></select>
</td>
</tr>
我正在尝试使用以下jQuery代码将id
#my_von
更改为#my_von1
:
jQuery.get('single_lesson.html', function(my_html)
{
jQuery(my_html).children().children('#my_von').attr('id', 'my_von1');
}, 'html');
它不起作用,我不明白为什么。
<小时/> 第console.log(jQuery(my_html).children().children('#my_von'));
行给出了以下数组:
[select#my_von, prevObject: e.fn.init[7], context: undefined, jquery: "1.11.1", constructor: function, selector: ""…]
如果我打开这个数组,那就是另一个名为select#my_von
的数组。如果我打开这个字段有几个字段,id: "my_von"
就是其中之一。字段id
就在那里,所以我认为没有理由不改变它。
答案 0 :(得分:0)
永远不要使用children().children()
,特别是对于潜在未知的DOM结构(以及ID查找速度最快时)。
通常的问题是get结果中的多个顶级元素,或者它不是以<
开头的有效HTML。最简单的解决方法是首先将其包装在虚拟元素中:
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');
答案 1 :(得分:0)
感谢您Arun P Johny的评论。我没有意识到jQuery(my_html)
是一个对象。我通过简单地将对象jQuery(my_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();