javascript - Jquery,从下拉列表中删除选项不起作用

标签 javascript jquery xml

我对此做了很多研究,但我尝试的任何方法都不起作用。我觉得我一定错过了一些东西,但我无法弄清楚。我希望有人能够阐明我的问题。

我有一个来自数据库查询的 XML 变量。该 xml 是从我一直使用的 js 包含文件编码的,该文件从 DB 文件中提取数据。如果需要的话我可以调整 xml 输出(如果这是解决方案)。基本上,查询从数据库中提取 header 并将其解析为 XML,以便我可以在下拉列表中使用它(以及稍后的其他功能)。 xml 如下所示:

<?xml version="1.0" encoding="utf-8"?>
<recordset>
<record><ID>1</ID><Name>Cell
</Name></record><record><ID>2</ID><Name>Column                                         
</Name></record><record><ID>3</ID><Name>Xval                      
</Name></record><record><ID>4</ID><Name>Yval                              
</Name></record><record><ID>5</ID><Name>ColumnID(XXYY)                       
</Name></record><record><ID>6</ID><Name>Lift                              
</Name></record><record><ID>7</ID><Name>CellIndex(XXYYZZ)                    
</Name></record><record><ID>8</ID><Name>10-1997                              
</Name></record><record><ID>9</ID><Name>11-1997                              
</Name></record><record><ID>10</ID><Name>12-1997                              
</Name></record>
</recordset>

还有更多条目(总共 255 个),都是类似日期的值(存储为文本)。出于我的目的,我想使用以下代码将它们添加到下拉列表中: (tval是上面存储的xml数据)

ps_data=tval;
var ps = $('#dropDownDest');
    $('Name', ps_data).each(function () {
        $('<option />', {
            text: $(this).text(),
            value: $(this).attr('ID')
        }).appendTo(ps);

    });

我想删除前 7 个条目并仅保留日期。我已经尝试了很多方法,但没有一个有效。我认为这与 xml 中没有“值”有关。这是我用来尝试删除选项的代码:

$("#dropDownDest option[value='1']").remove(); 

$("#dropDownDest option[value='Cell']").remove();

$("#dropDownDest)> option:eq(0)").remove();

我还尝试了省略“值”部分并尝试“ID”、“类”、“标题”和“标签”的变体。

对此的任何帮助将不胜感激!谢谢!

最佳答案

如果您想删除前 7 个条目,请尝试

$("#dropDownDest option").slice(0, 7).remove();

value 属性选择器可能无法工作,因为属性值可能包含一些附加字符或其他内容。

<小时/>

更好的是,不要首先添加它们

var xml = '<?xml version="1.0" encoding="utf-8"?> <recordset> <record><ID>1</ID><Name>Cell </Name></record><record><ID>2</ID><Name>Column                                          </Name></record><record><ID>3</ID><Name>Xval                       </Name></record><record><ID>4</ID><Name>Yval                               </Name></record><record><ID>5</ID><Name>ColumnID(XXYY)                        </Name></record><record><ID>6</ID><Name>Lift                               </Name></record><record><ID>7</ID><Name>CellIndex(XXYYZZ)                     </Name></record><record><ID>8</ID><Name>10-1997                               </Name></record><record><ID>9</ID><Name>11-1997                               </Name></record><record><ID>10</ID><Name>12-1997                               </Name></record> </recordset>';
ps_data = $.parseXML(xml);
var ps = $('#dropDownDest');
$('Name', ps_data).slice(7).each(function(i) {
  $('<option />', {
    text: $(this).text(),
    value: $(this).prev('ID').text()
  }).appendTo(ps);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="dropDownDest"></select>
--- 您的 value 属性选择器不起作用,因为 ID 不是 Name 的属性,它是其前一个同级属性,因此
var xml = '<?xml version="1.0" encoding="utf-8"?> <recordset> <record><ID>1</ID><Name>Cell </Name></record><record><ID>2</ID><Name>Column                                          </Name></record><record><ID>3</ID><Name>Xval                       </Name></record><record><ID>4</ID><Name>Yval                               </Name></record><record><ID>5</ID><Name>ColumnID(XXYY)                        </Name></record><record><ID>6</ID><Name>Lift                               </Name></record><record><ID>7</ID><Name>CellIndex(XXYYZZ)                     </Name></record><record><ID>8</ID><Name>10-1997                               </Name></record><record><ID>9</ID><Name>11-1997                               </Name></record><record><ID>10</ID><Name>12-1997                               </Name></record> </recordset>';
ps_data = $.parseXML(xml);
var ps = $('#dropDownDest');
$('Name', ps_data).each(function(i) {
  $('<option />', {
    text: $(this).text(),
    value: $(this).prev('ID').text()
  }).appendTo(ps);
});

$("#dropDownDest option[value='1']").remove();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="dropDownDest"></select>

关于javascript - Jquery,从下拉列表中删除选项不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26051370/

相关文章:

javascript - 尽管只满足几个条件之一,但 if 语句返回 true (jQuery)

java - 默认 XML 元素

javascript - 当字符串值包含逗号时,JSON.parse 在 Safari 中失败

javascript - jquery - 随时从对象外部调用原型(prototype)函数

javascript - 更新 url 中的查询字符串

javascript - jQuery : Select previous sibling of text node

底 Angular 上的 jQuery 圆 Angular 半径不起作用

xml - 在 VB.NET XML 文字中设置属性值

java - Hibernate:无法解析配置:hibernate.cfg.xml?

javascript - Reactjs 和 Nodejs 在 VS Code 中的通信