【问题标题】:jQuery get closest DROPDOWN(SELECT) element with IDjQuery 使用 ID 获取最近的 DROPDOWN(SELECT) 元素
【发布时间】:2014-05-01 09:26:54
【问题描述】:

大家好 我正在尝试获取最近的带有 Id 的下拉元素, 在一个页面上,我有 2 个具有相同 Id 属性的元素, 现在我想在单击页面中的任何元素时选择最接近的元素

<select id="XYZ" .... >
<bla bla bla OTHER DOM ELEMENTS>
<select id="XYZ" ... >
<bla bla bla OTHER DOM ELEMENTS>
<btn="ABC" />

当我点击按钮时,我想获取最近的 SELECT 元素的 VALUE

提前感谢您的帮助

【问题讨论】:

  • 你的意思是最近的上一个还是下一个select?例如,如果我单击第一个 bla 元素,它应该返回第一个还是第二个 select
  • 当我点击按钮时,它应该返回最接近的 SELECT 值,添加到上面的 SELECT 元素可以在任何地方向下,在任何地方向上。

标签: jquery web client-side development-environment


【解决方案1】:

你真的不应该在一个页面上有两个具有相同 ID 的元素,因为这违反了 HTML 规范并且可能会导致问题。

如果需要,请考虑使用类和单独的 ID,并使用 jQuery 进行选择:

<select class="XYZ" id="select_1" .... >
<bla bla bla OTHER DOM ELEMENTS>
<select class="XYZ id="select_2" ... >
<bla bla bla OTHER DOM ELEMENTS>
<button id="ABC" />

<script>
$(function()
{
    $('#ABC').click(function()
    {
        var value = $('#select_2').val();
    });
});
</script>

【讨论】:

    【解决方案2】:

    不要使用 Id 用户类,然后找到最近的元素, 当存在多个具有相同 id 的元素时,jquery 将无法正常工作。

    并且在您的 html 中,父元素和子元素看起来处于同一级别,如果是,则使用兄弟姐妹而不是最近的。

    【讨论】:

    • 是的,我可以通过 $(element).closest('.abc').val());但我不得不在这里使用 ID,因为我是两个视图的同一个模型,一个视图在剃刀视图中,另一个通过灯箱渲染
    • 所以不得不在这里使用 ID
    • 如果 id 相同,jquery 将不会给出所需的结果。
    【解决方案3】:

    您可以使用.prev,如下所示

       $(this).prev().attr('value');
    

    【讨论】:

      猜你喜欢
      • 2010-09-08
      • 1970-01-01
      • 2015-05-22
      • 1970-01-01
      • 1970-01-01
      • 2013-10-10
      • 2014-01-06
      • 1970-01-01
      • 2021-08-01
      相关资源
      最近更新 更多