jQuery需要刷新才能获得html()

时间:2013-09-06 14:07:42

标签: jquery

我在表单中的每个链接上自动生成输入标记,使得.html()从链接变为输入val()。 我想要的文字是在<强大>标记这就是我使用.children()函数的原因。

问题是此代码需要页面刷新才能正常工作。但是var htmltoval返回'undefined'我试着把这个循环放在$(document).ready等之前,之后......

我想这是因为元素是动态添加的。

以下是代码:

var content_input = '<input class="btn_menu_search" type="radio"/>';
$('form#form_search a').after(content_input);

$('#form_search :input').each(function () {
    var htmltoval = $(this).prev('a').children().html().toLowerCase();
    console.log(htmltoval) // return undefined on first page load 
    // however return the inner html string as expected
    var htmltoval = htmltoval.split(' ').join('');
    $(this).val(htmltoval);
});  

有什么想法吗?

在这里更新html:

<form method="post" action="#" id="form_search">
                    <h4 class="title"><span><strong>Villes</strong></span></h4>

                        <ul class="list-arrow" id="bienes">
                            <li><a class="bienes"><strong>Paris</strong></a></li>
                            <li><a class="bienes"><strong>Londres</strong></a> </li>
                            <li><a class="bienes"><strong>Tokyo</strong></a></li>
                            <li><a class="bienes"><strong>Moscou</strong></a></li>
                            <li><a class="bienes"><strong>Rio de Janeiro</strong></a></li>
                        </ul>

 <!-- etc-->
</form>

编辑:页面刷新后页面工作正常,即使在清除缓存后也是如此。该错误仅在第一次浏览器加载时出现。

1 个答案:

答案 0 :(得分:0)

我不知道它是否会改变某些内容但是我在这行console.log(htmltoval)添加了一个分号,我将htmltoval的声明放在each循环之外。我还改为使用类来改变循环元素:

var content_input = '<input class="btn_menu_search" type="radio"/>';
$('form#form_search a').after(content_input);

var htmltoval = "";
$('.btn_menu_search').each(function () {
    htmltoval = $(this).prev('a').children().html().toLowerCase();
    console.log(htmltoval); // return undefined on first page load 
    // however return the inner html string as expected
    htmltoval = htmltoval.split(' ').join('');
    $(this).val(htmltoval);
});  

请参阅jsFiddle