再次单击快速编辑时,字段不会反映先前的快速编辑更改

时间:2012-09-28 作者:helgatheviking

我在编辑屏幕中添加了一列,并在快速编辑中为该列添加了输入。每样东西都像我期望的那样保存和显示,只需一个小嗝。

如果我单击特定帖子的快速编辑,请更改自定义输入,然后保存。。。。嗯,该列正确更新。但是,如果再次单击“快速编辑”(Quick Edit)(不刷新页面),自定义输入将保持原始输入。。。。即使我使用.on(), inlineEditPost.revert() 即使隐藏值被正确更新(我可以通过Chrome的开发工具看到)。也许这完全是一个JS错误,但我想我会先在这里发布。

This is the content of my custom column:

echo $sub = get_post_meta(get_the_ID(), \'kia_subtitle\', true);
echo \'<div class="hidden kia-subtitle-value">\' . $sub . \'</div>\';

This is the jquery I am using to set the custom input\'s value in Quick Edit mode:

$( \'.editinline\' ).on( \'click\', function(){

    // revert Quick Edit menu so that it refreshes properly
    inlineEditPost.revert();

    posttitlelabel = $( \':input[name="post_title"]\', \'.inline-edit-row\' ).parents( \'label\' ); 
    tag_id = $( this ).parents( \'tr\' ).attr( \'id\' );    
    subtitle = $( \'div.kia-subtitle-value\', \'#\' + tag_id ).text();  

    $( \'input.kia-subtitle-input\', \'.inline-edit-row\' ).val( subtitle ).parents( \'label\' ).insertAfter( posttitlelabel );

});
Theposttitlelabel, 和insertAfter 部分只是移动输入,使其紧跟常规标题。

2 个回复
最合适的回答,由SO网友:helgatheviking 整理而成

解决方案在jquery方面。这个on函数需要向上冒泡,以确保总是获取最新的ajax添加内容。我只需调整第一行,使其与jquery文档更加一致.on().

$( \'#the-list\' ).on( \'click\', \'.editinline\', function(){

    // revert Quick Edit menu so that it refreshes properly
    inlineEditPost.revert();

    posttitlelabel = $( \':input[name="post_title"]\', \'.inline-edit-row\' ).parents( \'label\' ); 
    tag_id = $( this ).parents( \'tr\' ).attr( \'id\' );    
    subtitle = $( \'div.kia-subtitle-value\', \'#\' + tag_id ).text();  

    $( \'input.kia-subtitle-input\', \'.inline-edit-row\' ).val( subtitle ).parents( \'label\' ).insertAfter( posttitlelabel );

});

SO网友:kitchin

填充<select> 元素在这种情况下,我发现有必要使用setTimeout(..., 0) 戏法

window.setTimeout(function(){ jQuery(\'#foo\').val(bar); }, 0);

结束

相关推荐