javascript js获取标签名 - jQuery获取特定的选项标签文本




jquery获取dom js修改title (17)

好吧,说我有这个:

<select id='list'>
    <option value='1'>Option A</option>
    <option value='2'>Option B</option>
    <option value='3'>Option C</option>
</select>

当我的值为'2'时,如果我想获得“选项B”,选择器会是什么样子?

请注意,这不是要求如何获取选定的文本值,而只是其中的任何一个,无论是否选择,取决于值属性。 我试过了:

$("#list[value='2']").text();

但它不起作用。


Answers

我需要这个答案,因为我正在处理一个动态转换的对象,而这里的其他方法似乎并没有工作:

element.options[element.selectedIndex].text

这当然使用DOM对象,而不是使用nodeValue,childNodes等解析其HTML。


$("#list [value='2']").text();

id选择器后留下一个空格。


我想获得选定的标签。 这在jQuery 1.5.1中适用于我。

$("#list :selected").text();

  1. 如果在页面上只有一个选择标签,那么你可以指定id'list'

    jQuery("select option[value=2]").text();
    
  2. 获取选定的文本

    jQuery("select option:selected").text();
    

使用.each(function()...)通过动态创建的选择元素“循环”: $("option:selected").text();$(this + " option:selected").text()没有返回选中的选项文本 - 而是返回null。

但彼得莫滕森的解决方案工作:

$(this).find("option:selected").text();

我不知道为什么通常的方法在.each() (可能是我自己的错误)中没有成功,但是谢谢彼得。 我知道这不是原来的问题,但我提到它“对于通过谷歌来的新手来说。”

我会以$('#list option:selected").each()除了我需要从select元素获取东西外。


这对我来说非常合适,我一直在寻找一种方法来发送两个不同的值,这些值是由MySQL生成的选项,以下是通用和动态的:

$(this).find("option:selected").text();

正如其中一条评论所述。 有了这个,我可以创建一个动态函数,可以与我想要获取值,选项值和文本的所有选择框配合使用。

几天前我注意到,当更新jQuery从1.6到1.9的网站我使用这个代码,这停止工作......可能是与另一段代码冲突......无论如何,解决方案是从find()调用:

$(this).find(":selected").text();

这是我的解决方案...只有在更新jQuery后有任何问题时才使用它。


基于Paolo发布的原始HTML,我提出了以下内容。

$("#list").change(function() {
    alert($(this).find("option:selected").text()+' clicked!');
});

它已经过测试,可用于Internet Explorer和Firefox。



如果您想获得值为2的选项,请使用

$("#list option[value='2']").text();

如果您想获取当前选择的选项,请使用

$("#list option:selected").text();

它正在寻找具有属性value等于2的id list的元素。您想要的是listoptionoption

$("#list option[value='2']").text()

尝试以下操作:

$("#list option[value=2]").text();

您的原始代码片段无法正常工作的原因是您的OPTION标记是您的SELECT标记的子代,该代码具有id list


我正在寻找获得内部字段名称而不是ID的val,并从谷歌来到这篇文章,但没有找到我需要的解决方案,但我得到了解决方案,这里是:

因此,这可能有助于有人使用字段内部名称查找选定值,而不是使用长ID来查找SharePoint列表:

var e = $('select[title="IntenalFieldName"] option:selected').text(); 

我想要一个动态版本的选择多个,将显示什么被选中的权利(希望我读过,看到$(this).find ...更早):

<script type="text/javascript">
    $(document).ready(function(){
        $("select[showChoices]").each(function(){
            $(this).after("<span id='spn"+$(this).attr('id')+"' style='border:1px solid black;width:100px;float:left;white-space:nowrap;'>&nbsp;</span>");
            doShowSelected($(this).attr('id'));//shows initial selections
        }).change(function(){
            doShowSelected($(this).attr('id'));//as user makes new selections
        });
    });
    function doShowSelected(inId){
        var aryVals=$("#"+inId).val();
        var selText="";
        for(var i=0; i<aryVals.length; i++){
            var o="#"+inId+" option[value='"+aryVals[i]+"']";
            selText+=$(o).text()+"<br>";
        }
        $("#spn"+inId).html(selText);
    }
</script>
<select style="float:left;" multiple="true" id="mySelect" name="mySelect" showChoices="true">
    <option selected="selected" value=1>opt 1</option>
    <option selected="selected" value=2>opt 2</option>
    <option value=3>opt 3</option>
    <option value=4>opt 4</option>
</select>

作为替代解决方案,您还可以使用jQuery选择器上下文部分在下拉列表中找到value="2" <option>元素:

$("option[value='2']", "#list").text();

您可以通过使用函数.text();获得选定的选项文本.text();

你可以像这样调用函数:

jQuery("select option:selected").text();

这是一个古老的问题,在一段时间内还没有更新,现在正确的做法是使用

$("#action").on('change',function() {
    alert($(this).find("option:selected").text()+' clicked!');
});

我希望这有帮助 :-)


您应该考虑的另一个答案是,如果您隐藏了一个元素,您应该使用jQuery ,但不是实际隐藏它,而是删除整个元素,但是将其HTML内容和标记本身复制到jQuery变量中,然后你需要做的就是测试屏幕上是否有这样的标签,使用正常的if (!$('#thetagname').length)





javascript jquery drop-down-menu jquery-selectors