Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何制作';这';在选项上正常工作?_Jquery - Fatal编程技术网

Jquery 如何制作';这';在选项上正常工作?

Jquery 如何制作';这';在选项上正常工作?,jquery,Jquery,所以我试图让“这个”正常工作,但我相信我在某个地方犯了一个错误,使得“这个”选择每个选项而不是单个选项 我试过使用“.each”函数,但没有 这是我的jQuery代码 $('<input type="text" class="beruf-suche" placeholder="Berufsuchen"/>').insertAfter('.home-page .field_beruf label'); var beruf_suche_option = $( '.home-pag

所以我试图让“这个”正常工作,但我相信我在某个地方犯了一个错误,使得“这个”选择每个选项而不是单个选项

我试过使用“.each”函数,但没有

这是我的jQuery代码

$('<input type="text" class="beruf-suche" placeholder="Berufsuchen"/>').insertAfter('.home-page .field_beruf label');

   var beruf_suche_option = $( '.home-page .field_beruf select option' );
   var beruf_suche_option_val = $( '.home-page .field_beruf select option' ).val();

   $('.beruf-suche').keyup(function() {

      if (this.value == beruf_suche_option_val) {
         $(beruf_suche_option).each(function() {
            $(this).show();
         });
      }
      else {
         $(beruf_suche_option).hide();
      }

   });
$('').insertAfter('.home page.field_beruf label');
var beruf_suche_option=$('.home page.field_beruf select option');
var beruf_suche_option_val=$('.home page.field_beruf select option').val();
$('.beruf suche').keyup(函数(){
if(this.value==beruf\u suche\u option\u val){
$(beruf_suche_选项)。每个(函数(){
$(this.show();
});
}
否则{
$(beruf_suche_选项).hide();
}
});

当我在输入文本框中键入内容时,如果:输入框中的文本==选项值,则该选项应出现。

问题在于您正在对元素集合调用
val()
,因此结果将仅为第一个
选项的值

要解决这个问题,您需要循环所有选项,并在该循环中执行比较。然后,还可以将比较的布尔结果传递给
toggle()
,从而使循环更加简洁。试试这个:

var$beruf_suche_option=$('.home page.field_beruf select option');
$('.beruf suche').keyup(函数(){
var beruf_suche_val=this.value.trim();
$beruf_suche_选项。每个(函数(){
$(this.toggle)(beruf_suche_val==this.value);
});
});

您可以尝试类似的方法,并且可以根据您想要匹配的内容(val或文本)非常轻松地对其进行修改

HTML:


您需要遍历所有
选项
元素,并分别比较它们的值。
$(beruf\u suche\u选项)。每个(function()
都应该是
beruf\u suche\u选项。每个(function())
@LelioFaieta它们是等效的,his只是效率稍低一些,因为它创建了一个新的jQuery对象。@Barmar不会第一个返回
$($('.home page.field\u beruf select option'))
?@LelioFaieta是的。但是如果
$()
是一个jQuery集合,它返回一个具有相同元素的新集合。感谢您的澄清,它很有效。向您致意。
<input type="text" class="beruf-suche" placeholder="Berufsuchen"/>

<select>
<option value="" readonly selected>Select An Option</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
var beruf_suche_options = $( 'select option' );


$('.beruf-suche').keyup(function() {

   var html = beruf_suche_options.filter( function (index) {
      return (this.value ==  $(".beruf-suche").val() ||  this.value === "");
    });
    $("select").html(html);
});