Javascript 内联<;脚本>;当使用jQuery html填充div时,块的焦点不会再次触发

Javascript 内联<;脚本>;当使用jQuery html填充div时,块的焦点不会再次触发,javascript,jquery,html,css,jquery-1.7,Javascript,Jquery,Html,Css,Jquery 1.7,我在HTML表单中有以下JavaScript代码块,当焦点放在表单字段上时,它将的z索引设置为0 <script type="text/javascript"> $('.olabel input').focus(function() { console.log('focus on a form field'); $('

我在HTML表单中有以下JavaScript代码块,当焦点放在表单字段上时,它将
的z索引设置为0

                <script type="text/javascript">
                    $('.olabel input').focus(function() {
                        console.log('focus on a form field');
                        $('.olabel').css('zIndex', '0');
                        $(this).closest('.olabel').css('zIndex', 1998);
                    });                                 
                </script>
我发现的问题是,当我第一次单击“否”时,
console.log('focus on a form field')
会正确地写入控制台。但是,如果我随后隐藏表单(通过单击“是”),然后再次显示表单(通过单击“否”),则控制台不会将此条目填充到表单中,并且z索引不是由JavaScript重新编写的

这是我使用jQuery
html()
方法的问题吗


表单的标记不会在显示/隐藏之间更改,因此是否有原因使我的内联
标记不会再次触发?

我认为您需要对事件处理程序使用委派:

<script type="text/javascript">

    // You can use `document` or some other parent container that is always present

    $( document ).on( 'focus', '.olabel input', function() {

        console.log('focus on a form field');
        $('.olabel').css('zIndex', '0');
        $(this).closest('.olabel').css('zIndex', 1998);
    });  

</script>

//您可以使用“document”或其他始终存在的父容器
$(文档).on('focus','.olabel input',function()){
log(“关注表单字段”);
$('.olabel').css('zIndex','0');
$(this).closest('.olabel').css('zIndex',1998);
});  

我认为您需要对事件处理程序使用委托:

<script type="text/javascript">

    // You can use `document` or some other parent container that is always present

    $( document ).on( 'focus', '.olabel input', function() {

        console.log('focus on a form field');
        $('.olabel').css('zIndex', '0');
        $(this).closest('.olabel').css('zIndex', 1998);
    });  

</script>

//您可以使用“document”或其他始终存在的父容器
$(文档).on('focus','.olabel input',function()){
log(“关注表单字段”);
$('.olabel').css('zIndex','0');
$(this).closest('.olabel').css('zIndex',1998);
});  

我认为问题在于创建新元素后没有附加焦点事件。尝试:

function eventHandler() {
    console.log('focus on a form field');
    $('.olabel').css('zIndex', '0');
    $(this).closest('.olabel').css('zIndex', 1998);
}

$(target).find('.d_options_detail_d_address_container').html(d_address_form).focus(eventHandler);

创建新元素时,它有帮助吗?

我认为问题在于创建新元素后没有附加焦点事件。尝试:

function eventHandler() {
    console.log('focus on a form field');
    $('.olabel').css('zIndex', '0');
    $(this).closest('.olabel').css('zIndex', 1998);
}

$(target).find('.d_options_detail_d_address_container').html(d_address_form).focus(eventHandler);

创建新元素时,它有帮助吗?

jQuery中的
.html()
代码总是会去掉所有
块。@尖头这很奇怪,而且不一致,因为它似乎是第一次加载的。当它去掉脚本块时,它也会运行它们,所以它第一次工作。
.html()
jQuery中的代码总是去掉所有的
块。@Pointy这很奇怪,也是不一致的,因为它似乎是第一次加载的。当它去掉脚本块时,它也会运行它们,所以它第一次工作。