【问题标题】:jQuery inArray only looking at first valuejQuery inArray 只查看第一个值
【发布时间】:2011-03-15 05:38:17
【问题描述】:
$('#client').keyup(function() {
    if ($('#client').val() != $('.recent_client').attr('id')) {
        $('.recent_client').removeClass('recent_client_active').addClass('recent_client_inactive');
    }
    else if (jQuery.inArray(parseInt($('#client').val()), client_ids)) {
        alert('IN ARRAY');
    }
});

我的 HTML

<p><input type="text" name="client" id="client" placeholder="Click here and start typing your client name..."></p>

<div id="recent_clients">
<p><a href="#" class="recent_client recent_client_inactive" id="Client Name 1">Client Name 1</a><a href="#" class="recent_client recent_client_inactive" id="Client Name 2">Client Name 2</a><a href="#" class="recent_client recent_client_inactive" id="Client Name 3">Client Name 3</a><a href="#" class="recent_client recent_client_inactive" id="Client Name 4">Client Name 4</a><a href="#" class="recent_client recent_client_inactive" id="Client Name 5">Client Name 5</a><a href="#" class="recent_client recent_client_inactive" id="Client Name 6">Client Name 6</a></p>
</div>

我有一个数组,其中包含我的#recent_clients div 中每个 a 的 id 值。简单的东西。我也有一个输入框。如果您输入最近客户之一的全名,我希望该客户名称突出显示。所以我认为 jQuery.inArray 会帮助解决这个问题,但它不起作用。如果我输入数组的第一个值(“客户端名称 1”),我会收到警报。但是,如果我在后面键入任何其他客户端名称(例如“客户端名称 2”),则不会发生任何事情。

我在这里可能做错了什么?

【问题讨论】:

  • keyup 代码块中缺少的右大括号是复制/粘贴错误还是实际代码中也有?
  • 我更新了我的代码以包含我拥有的实际 .keyup 函数以及 HTML。当我使用 jQuery.each 返回数组的数据时,它确实显示了我拥有的所有 6 个客户端。

标签: javascript jquery


【解决方案1】:

由于 inArray() 的工作方式类似于 indexOf,因此您应该测试结果是否为 > -1

更新

    var client_ids = ['Client Name 1', 'Client Name 2', 'Client Name 3', 'Client Name 4', 'Client Name 5'];
$('#client').keyup(function() {
    if (jQuery.inArray($('#client').val(), client_ids) > -1) 
        $('#client').css('background-color','#00cc00');
    else
       $('#client').css('background-color','#cc0000');
});

【讨论】:

  • 我之前尝试过,但它根本没有提醒我。因此,如果没有'> -1',我至少会得到第一个键/值对,因此我会收到警报。使用 '> -1',我什么也得不到。
  • @dallen - 这个建议是正确的,但是你需要去掉 parseInt,因为你的 id 不是整数。
  • @Chris 我也这样做了,但我仍然只得到返回的数组的第一个键/值对。
  • 好的,我发现了问题。我的 if 语句的第一部分“if ($('#client').val() != $('.recent_client').attr('id')) {” 搞砸了。删除后,它现在可以正常工作了。
猜你喜欢
  • 2014-04-07
  • 1970-01-01
  • 2020-09-22
  • 2021-11-19
  • 2022-08-06
  • 2021-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多