【问题标题】:How do I retrieve the actual string selector如何检索实际的字符串选择器
【发布时间】:2014-06-16 17:51:37
【问题描述】:

给定一个带有选项的选择标签:

<div id='mydiv'>0</div>
    <select id="mysel">
        <option id="opt1">a</option>
        <option id="opt2">b</option>
    </select>...

如何检索实际的字符串选择? IE。如何从 var mysel 中检索实际的“select#mysel”?

如何使用它的示例?

var mysel = $("select#mysel");
var myopt = $(mysel.actualstringselection + " option");
var myoptcount = myopt.length;
alert("my option count:" + myoptcount );
$("#mydiv").html(myoptcount);

【问题讨论】:

  • 您能否添加更多有关您要解决的问题的详细信息?事实上,这个问题本质上是荒谬的。
  • “如果我将变量设置为特定的 css 选择器” 您的代码中没有任何地方包含 CSS 选择器的变量。这看起来像这样:var variable = "#mysel"; 代码的第一行有一个变量(在行运行之后)包含对 jQuery 对象的引用,该对象包含零个或多个 DOM 元素 jQuery 在您将选择器传递给 @987654324 时发现@,如果这就是你的意思。
  • 我还应该指出,选择器mysel myopt 将尝试选择任何&lt;myopt&gt; 元素,它们是&lt;mysel&gt; 元素的子元素。 @T.J.Crowder 下面的回答解释了如何使用您的 mysel 变量来查找子元素。
  • 我正在寻找一种可能的解决方案来解决我的问题,即使用分配给变量的现有选择器并对其执行进一步的选择。
  • 我修复了代码以显示选项而不是 myopt。

标签: javascript jquery css


【解决方案1】:

更新问题的答案

如何从 var mysel 中检索实际的“select#mysel”?

如何使用它的示例?

var mysel = $("select#mysel");
var myopt = $(mysel.actualstringselection + " option");

所以基本上,您需要传递给$() 的原始选择器字符串以获取mysel

你无法理解。 jQuery 从未提供过官方的方式来做到这一点。很长一段时间以来,包含它的 jQuery 实例上有一个未记录的属性(大多数情况下),但它总是未记录,因为它并不完全可靠,甚至在当前版本中也不存在。

因此,您可以自己做:

 var selector = "select#mysel";
 var mysel = $(selector).data("selector", selector);
 // Presumably somewhere else where you no longer have the `selector` variable:
 var myopt = $(mysel.data("selector") + " option");

但是,您不希望在上述情况下使用它。 (您将使用find,如最初[下文]所述)。我能想到的唯一原因是如果您更改了 DOM 并想要重复原始查询。例如:

mysel = $(mysel.data("selector")); // Goes looking for the elements again

原答案

如果在这行之后:

var mysel = $("select#mysel");

...您尝试使用mysel 在该jQuery 对象中的任何DOM 元素的后代元素中查找某些内容,您使用find

var optionElements = mysel.find("option");

【讨论】:

  • 我正在尝试使用第一个选择来进一步选择我的第二个选择,但使用变量而不是实际的 jquery 选择器来执行此操作。
  • 当您说“使用变量而不是...jQuery 选择器”时,您想用哪些变量替换哪些选择器?
  • 我删除了这个作为答案 b/c 我不得不改变这个问题,希望它可能会被重新打开。
  • @RetroCoder:我也回答了更新后的问题,但这看起来严重可疑。了解原始选择器是什么的真实世界用例是什么?显然不是找到选项元素,因为我最初的回答告诉你如何做到这一点......
  • 我试图删除位于选项列表顶部或选项列表底部的某些选项,例如 Not Applicable 或 Select。但是很好奇我如何可以简单地添加 [value='NA'] 或 [value=''] 并在一个国家有或没有州的情况下删除这些选项。像美国和加州一样,可能有州,但像大多数其他国家/地区一样,没有州。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多