gpt4 book ai didi

javascript - 在 jQuery 中使用 .children 和 .find

转载 作者:行者123 更新时间:2023-12-02 16:21:00 24 4
gpt4 key购买 nike

我的页面上有一组控件,我正在尝试迭代它们并确定它们是否具有值。其中一些控件是 控件关联的选项并查找选定的选项。我尝试过 .children() 和 .find("option:selected") 但它们都不起作用(都在 javascript 中抛出“未定义”错误)。我做错了什么?

function getJsonValue(control, json) { 
if(control.dataset["fieldname"] !== "undefined"){
if(control.tagName == "SELECT") {
var selected = "{";
var idName = control.dataset["idname"];
control.children.each( function() {
if(this.selected) {
selected += idName + ": " + this.val() + ",";
}
});
selected += "}";
if(selected != '') {
json += control.dataset["fieldname"] + ": ";
json += selected + ",";
}
} else {
if(control.val() != '') {
json += control.dataset["fieldname"] + ": ";
json += control.val() + ",";
}
}
}
};

错误出现在上述代码的第 5 行 (control.children.each)。我试过:

control.children.each( function() {
control.childre().each( function() {
control.find("option:selected").each( function() {

这些选项都不起作用。作为引用,“control”变量是从通过执行以下操作找到的另一个函数传递的:

$("#search-header").find("select").each( function() {
json = getJsonValue(this, json);
});

最佳答案

为了进一步扩展我的评论,我可以看到您正在传递对象 this,该对象被分配给函数中的变量 control。然而,jQuery 不能直接操作这个对象,除非将其转换为 jQuery 对象,这可以简单地通过用 jQuery 别名 $(control) 包装它来完成(提示,就像人们如何在 jQuery 中使用 $(this),这是一样的)。

因此,如果您以这种方式修改代码,它应该可以工作:

function getJsonValue(control, json) { 
if(control.dataset["fieldname"] !== "undefined"){
if(control.tagName == "SELECT") {
var selected = "{";
var idName = control.dataset["idname"];
$(control).children.each( function() {
if(this.selected) {
selected += idName + ": " + this.val() + ",";
}
});
selected += "}";
if(selected != '') {
json += control.dataset["fieldname"] + ": ";
json += selected + ",";
}
} else {
if(control.val() != '') {
json += control.dataset["fieldname"] + ": ";
json += $(control).val() + ",";
}
}
}
};

p/s:顺便说一句,如果您想从 jQuery 对象访问原始 DOM 节点,只需使用 $(control)[0] ;)

关于javascript - 在 jQuery 中使用 .children 和 .find,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29122322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com