WP Media Library - Select 函数不更新 ID 更新的行索引
WP Media Library - Select function not updating row index for ID update
我正在开发一个 wordpress 博客,每个 post 的编辑页面上都有一个自定义元数据框。
此 metabox 由 table 组成,每行包含来自媒体库 select 的图像 src。
现在添加的每个新行都有一个 id:
第 1 行:img_metabox_src_0
第 2 行:img_metabox_src_1
第 3 行:img_metabox_src_2
Table headers 就像:
----图片 < img >------ |------ URL(输入文本框)------ | -------- Select 图片(输入提交)------ | -----删除图片(输入提交)--------
现在,
单击任何行上的 "Select Image",我从 jquery 检索行索引,然后发送: "img_metabox_src_"+index 到 file_frame.on( 'select', function( ) url 更新。
即
jQuery('tr #select_image').off().on('click', function( event ){
event.preventDefault();
var row_index = jQuery(this).closest('tr').index();
var id = "img_metabox_src_" + row_index;
//******** 1 ***********
console.log('row_index');
console.log(row_index);
console.log(id);
console.log(jQuery('#' + id));
if ( file_frame ) {
file_frame.open();
return;
}
file_frame = wp.media.frames.file_frame = wp.media({
title: "Select/Upload Image",
button: {
text: "Select",
},
library : { type : 'image'},
multiple: false
});
file_frame.on( 'select', function() {
attachment = file_frame.state().get('selection').first().toJSON();
// "mca_features_tray" is the ID of my text field that will receive the image
// I'm getting the ID rather than the URL:
// but you could get the URL instead by doing something like this:
//******** 2 ***********
console.log(id);
console.log(jQuery('#' + id));
jQuery('#' + id).attr('value',attachment.url);
id = null;
});
现在,
案例 1:当我第一次点击行索引 3 时,URL 更新 img_metabox_src_3。
情况 2:但是在我单击哪一行之后,url 更新 img_metabox_src_3。
另外,在添加日志时,我得到
(对于案例 2,假设我单击了行索引 1):
//******** 1 ***********
行索引:1
编号:img_metabox_src_1
//******** 2 ***********
编号:img_metabox_src_3
即里面 file_frame.on( 'select', function() {,
ID 值更改为第一次单击的值。
请帮助如何将更新的行 index/id 传递给 select 函数
谢谢,我使用了全局概念:
function set_row_index (ind){
row_index = ind;
}
function get_row_index(){
return row_index;
}
jQuery(document).ready(function(){
jQuery('tr input.select_media_library').off().on('click', function( event ){
event.preventDefault();
var index = jQuery(this).closest('tr').index();
**set_row_index(index);**
.
.
.
file_frame.on( 'select', function() {
attachment = file_frame.state().get('selection').first().toJSON();
**index = get_row_index();**
var id = "img_src_" + index;
jQuery('#' + id).attr('value',attachment.url);
});
file_frame.open();
});
我正在开发一个 wordpress 博客,每个 post 的编辑页面上都有一个自定义元数据框。
此 metabox 由 table 组成,每行包含来自媒体库 select 的图像 src。
现在添加的每个新行都有一个 id:
第 1 行:img_metabox_src_0
第 2 行:img_metabox_src_1
第 3 行:img_metabox_src_2
Table headers 就像:
----图片 < img >------ |------ URL(输入文本框)------ | -------- Select 图片(输入提交)------ | -----删除图片(输入提交)--------
现在, 单击任何行上的 "Select Image",我从 jquery 检索行索引,然后发送: "img_metabox_src_"+index 到 file_frame.on( 'select', function( ) url 更新。
即
jQuery('tr #select_image').off().on('click', function( event ){
event.preventDefault();
var row_index = jQuery(this).closest('tr').index();
var id = "img_metabox_src_" + row_index;
//******** 1 ***********
console.log('row_index');
console.log(row_index);
console.log(id);
console.log(jQuery('#' + id));
if ( file_frame ) {
file_frame.open();
return;
}
file_frame = wp.media.frames.file_frame = wp.media({
title: "Select/Upload Image",
button: {
text: "Select",
},
library : { type : 'image'},
multiple: false
});
file_frame.on( 'select', function() {
attachment = file_frame.state().get('selection').first().toJSON();
// "mca_features_tray" is the ID of my text field that will receive the image
// I'm getting the ID rather than the URL:
// but you could get the URL instead by doing something like this:
//******** 2 ***********
console.log(id);
console.log(jQuery('#' + id));
jQuery('#' + id).attr('value',attachment.url);
id = null;
});
现在,
案例 1:当我第一次点击行索引 3 时,URL 更新 img_metabox_src_3。
情况 2:但是在我单击哪一行之后,url 更新 img_metabox_src_3。
另外,在添加日志时,我得到
(对于案例 2,假设我单击了行索引 1):
//******** 1 ***********
行索引:1
编号:img_metabox_src_1
//******** 2 ***********
编号:img_metabox_src_3
即里面 file_frame.on( 'select', function() {,
ID 值更改为第一次单击的值。
请帮助如何将更新的行 index/id 传递给 select 函数
谢谢,我使用了全局概念:
function set_row_index (ind){
row_index = ind;
}
function get_row_index(){
return row_index;
}
jQuery(document).ready(function(){
jQuery('tr input.select_media_library').off().on('click', function( event ){
event.preventDefault();
var index = jQuery(this).closest('tr').index();
**set_row_index(index);**
.
.
.
file_frame.on( 'select', function() {
attachment = file_frame.state().get('selection').first().toJSON();
**index = get_row_index();**
var id = "img_src_" + index;
jQuery('#' + id).attr('value',attachment.url);
});
file_frame.open();
});