【问题标题】:<Select> array element's change event will populate another <Select> element by jQuery<Select> 数组元素的更改事件将通过 jQuery 填充另一个 <Select> 元素
【发布时间】:2010-11-26 12:49:30
【问题描述】:

我有 2 个数组元素。我试图将更改事件绑定到第一个元素,以便选择更改甚至会影响第二个元素。 示例:

<select name="item1[]" id="item1[]">
  <option value="0">...</option>
  <option value="1">...</option>
  <option value="3">...</option>
</select>

<select name="item2[]" id="item2[]">
  <option value="0">...</option>
  <option value="1">...</option>
  <option value="3">...</option>
</select>

<select name="item1[]" id="item1[]">
  <option value="0">...</option>
  <option value="1">...</option>
  <option value="3">...</option>
</select>

<select name="item2[]" id="item2[]">
  <option value="0">...</option>
  <option value="1">...</option>
  <option value="3">...</option>
</select>

因此,有更多行包含 item1 和 item2 数组元素等待 PHP 进程。

当 item1 选择发生变化时, item2 将被填充。但即使在 item1 更改事件中,我的以下 jquery 函数也不起作用。我不明白为什么绑定功能不起作用。我尝试使用警报但不起作用。

<script>
$('#item1[]').each(function(index){
  $(this).bind("change", function(){
    another function call to populate item2
    alert($(this).val()); // not working
  });
});
</script>

请帮忙。

问候。

【问题讨论】:

  • ID必须是唯一的。
  • 两个元素都有 ID item1[] 是不是错字? ID 必须是唯一的!
  • 您的活动是here
  • 除了唯一性之外,[] 是无效的......或者对于 ID 来说真的很合适(IMO)(例如,您当前的转义问题),为什么不将 ID 设置为 @987654327 @?
  • @Nick Craver 你说的很对:"ID 和 NAME 标记必须以字母 ([A-Za-z]) 开头,后面可以跟任意数量的字母、数字([0-9])、连字符 ("-")、下划线 ("_")、冒号 (":") 和句点 (".")。" (source)

标签: jquery arrays


【解决方案1】:

同一个id在一个文档中不能存在多次,jquery一找到一个id就停止搜索domobjects。

另外,[] 在 id 中无效,请参阅 W3C

【讨论】:

    【解决方案2】:

    除了 cmets,您还需要转义那些方括号(或从 ID 属性中删除它们 - 它们只会使事情复杂化,@jensgram 指出invalid in HTML 4):

    $('#item1\\[\\]')
    

    http://api.jquery.com/category/selectors/

    【讨论】:

    • 非常感谢兄弟。你能帮我多一点吗。当 item1 发生变化时,如何确定 item2 的索引。因为如果 item[1] 发生变化,那么只有 item2[1] 不会填充其他 item2[..]
    • "...它们只会让事情复杂化" 还有invalid
    • 关于无效的东西;很抱歉,更不用说该链接涵盖了 HTML4。 HTML5 似乎接受除空格以外的任何内容。
    • @Iqbal - 我认为您需要将其余的实现粘贴到问题中。
    【解决方案3】:

    不知道为什么要进行如此复杂的调用,但应该这样做:

    $('#item1\\[\\]').change(function(){
        alert($(this).val());
    });
    

    (前提是您只有一个具有该 ID 的元素)。

    [] 是属性选择器的元字符:

    如果您希望使用任何元字符 (#;&amp;,.+*~':"!^$[]()=&gt;|/@) 作为名称的文字部分,则必须使用两个反斜杠转义该字符:\\。例如,如果您有一个带有id="foo.bar" 的元素,则可以使用选择器$("#foo\\.bar")

    顺便说一句,如果您有 PHP 的方括号,则不需要在 ID 中使用它们。它们仅在 name 属性中有意义。

    【讨论】:

    • 是的,菲利克斯兄弟。我需要为 PHP 保留它。我注意到不需要ID。现在我的问题是通过 mysql 数据填充相同的索引 item2[same index of item1]。
    • @Iqbal:它们在您的 HTML 中是如何定位的? item2 是否总是直接跟在对应的item1 后面? (即item2item1 的下一个兄弟吗?)
    猜你喜欢
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 2017-10-09
    • 1970-01-01
    相关资源
    最近更新 更多