【问题标题】:Jquery : Selectors and HiddenJquery:选择器和隐藏
【发布时间】:2012-08-04 12:00:39
【问题描述】:

我有一些输入,我想用从文本中获得的值填充它们。 这是我的代码:

$( "#dialog-test fieldset" ).hide();
$( "#dialog-test fieldset:eq("+j+")" ).show();
$(this).children(".testValue").each(function(k,item) {
    $( "#dialog-test fielset:visible input").eq(k).val($(this).text());
});
$( "#dialog-test" ).dialog( "open" );

这不起作用,因为 #dialog-test 被隐藏,因此 :visible 不返回任何内容。 这行得通,但只有在我完成所有值的更改后,我才能打开我的对话框:

$( "#dialog-test fieldset" ).hide();
$( "#dialog-test fieldset:eq("+j+")" ).show();
$( ".ui-dialog:eq(2) .ui-button-text:first" ).text("Modifier le test");
$( "#dialog-test" ).dialog( "open" );
$(this).children(".testValue").each(function(k,item) {
    $( "#dialog-test fieldset:visible input").eq(k).val($(this).text());
});

我会使用第一个解决方案,但无法找到处理方式,以便 :visible 工作。

非常感谢您的帮助, 蒂姆

【问题讨论】:

  • 类似于this ?
  • 这对我有帮助,我编辑了我的问题,因为我的问题实际上是其他问题。

标签: jquery css-selectors children


【解决方案1】:

这里:

var $inputs = $( 'fieldset', '#dialog-test' ).hide().eq( j ).show().find( 'input' );

$( this ).children( '.testValue' ).each(function ( i, val ) {
    $inputs.eq( i ).val( $( this ).text() );
});

【讨论】:

  • 使用方括号表示法是否返回 dom 元素而不是 jQuery 对象?
  • @wirey 是的。我已将其更改为eq(i)。谢谢。
  • 太完美了,非常感谢!只是另一个问题。我有输入和选择,我如何调整您的解决方案以在 find() 中添加选择。
【解决方案2】:

您可以尝试使用 eq 过滤器通过索引来选择相应的输入:

$(this).children(".testValue").each(function(k,item) {
    alert($(this).text());
    $( "#dialog-test input:visible").eq(k).val($(this).text());
});

问候

艾蒂安

【讨论】:

    【解决方案3】:

    试试这个。

    var visible_inputs = $('#dialog-test input:visible');
    var i =0;
    $(this).children('.testValue').each(function(){
        $((visible_inputs)[i++]).val($(this).text());
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-28
      • 2011-11-12
      • 1970-01-01
      • 2011-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多