Javascript 内联<;脚本>;当使用jQuery html填充div时,块的焦点不会再次触发
我在HTML表单中有以下JavaScript代码块,当焦点放在表单字段上时,它将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'); $('
的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重新编写的
这是我使用jQueryhtml()
方法的问题吗
表单的标记不会在显示/隐藏之间更改,因此是否有原因使我的内联
标记不会再次触发?我认为您需要对事件处理程序使用委派:
<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这很奇怪,也是不一致的,因为它似乎是第一次加载的。当它去掉脚本块时,它也会运行它们,所以它第一次工作。