我如何访问具有 value=xx 和 jquery 的所选项目名称的值
how can i access value of selected item's name which has value=xx with jquery
我有 select 个框的列表,例如 below.I 想要首先访问从下到上的名称 select 框,其中一个框具有值 "a" select编辑
when sb3 has selected values = b then if sb2 selected values =a I want o get this else if sb1 selected values =a 我想要 o get这个
当 sb2 有 selected 值 =b 那么如果 sb1 selected 值 =a 我想要得到这个并且像这样
我试过了
console.log( $("[name^='sb'] option[value='a']:selected").closest('select').attr("name") );
或
console.log( $(this).parent().closest( "[name^='sb'] option[value='ana']" ).attr("name") );
示例select 列表;
<select name="sb1" >
<option value="a"></option>
<option value="b"></option>
</select>
<select name="sb2" >
<option value="a"></option>
<option value="b"></option>
</select>
<select name="sb3" >
<option value="a"></option>
<option value="b"></option>
</select>
编辑另一个考试;
i want to get closest item prior to selested item.
sb45=a
sb46=a
sb47=b --> this give me sb46
sb48=b --> this give me sb46
sb49=a
sb50=b --> this give me sb49
thanks for help.
你必须创建一个递归函数来迭代抛出上一个元素并用 value == a
搜索 select 否则没有人 selected .
function getRecursivePrevName($node) {
$sb = $($node).prev("[name^='sb']");
if($sb.length) {
if($sb.val()=="a") return $sb.attr("name")
else return getRecursivePrevName($sb);
}
else return null;
}
附加更改处理程序将显示 sb* 已 selected(优先级从上到下)
请参阅以下代码段:
$("[name^='sb']").on("change", function() {
if($(this).val() !== 'a') {
var value = getRecursivePrevName($(this));
console.log(value);
if(value != null )
$("#selected").html("select sb is <span style='color:red'>" + value + "</span>");
else $("#selected").html("no select has value a");
}else {
console.log($(this).attr("name"));
$("#selected").html("select sb is <span style='color:red'>" + $(this).attr("name") + "</span>");
}
});
function getRecursivePrevName($node) {
$sb = $($node).prev("[name^='sb']");
if($sb.length) {
if($sb.val()=="a") return $sb.attr("name")
else return getRecursivePrevName($sb);
}
else return null;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<select name="sb1">
<option></option>
<option value="a">a</option>
<option value="b">b</option>
</select>
<select name="sb2">
<option></option>
<option value="a">a</option>
<option value="b">b</option>
</select>
<select name="sb3">
<option></option>
<option value="a">a</option>
<option value="b">b</option>
</select>
<select name="sb4">
<option></option>
<option value="a">a</option>
<option value="b">b</option>
</select>
<select name="sb5">
<option></option>
<option value="a">a</option>
<option value="b">b</option>
</select>
<select name="sb6">
<option></option>
<option value="a">a</option>
<option value="b">b</option>
</select>
<br><br>
<div id="selected">
<div>
我有 select 个框的列表,例如 below.I 想要首先访问从下到上的名称 select 框,其中一个框具有值 "a" select编辑
when sb3 has selected values = b then if sb2 selected values =a I want o get this else if sb1 selected values =a 我想要 o get这个
当 sb2 有 selected 值 =b 那么如果 sb1 selected 值 =a 我想要得到这个并且像这样
我试过了
console.log( $("[name^='sb'] option[value='a']:selected").closest('select').attr("name") );
或
console.log( $(this).parent().closest( "[name^='sb'] option[value='ana']" ).attr("name") );
示例select 列表;
<select name="sb1" >
<option value="a"></option>
<option value="b"></option>
</select>
<select name="sb2" >
<option value="a"></option>
<option value="b"></option>
</select>
<select name="sb3" >
<option value="a"></option>
<option value="b"></option>
</select>
编辑另一个考试;
i want to get closest item prior to selested item.
sb45=a
sb46=a
sb47=b --> this give me sb46
sb48=b --> this give me sb46
sb49=a
sb50=b --> this give me sb49
thanks for help.
你必须创建一个递归函数来迭代抛出上一个元素并用 value == a
搜索 select 否则没有人 selected .
function getRecursivePrevName($node) {
$sb = $($node).prev("[name^='sb']");
if($sb.length) {
if($sb.val()=="a") return $sb.attr("name")
else return getRecursivePrevName($sb);
}
else return null;
}
附加更改处理程序将显示 sb* 已 selected(优先级从上到下)
请参阅以下代码段:
$("[name^='sb']").on("change", function() {
if($(this).val() !== 'a') {
var value = getRecursivePrevName($(this));
console.log(value);
if(value != null )
$("#selected").html("select sb is <span style='color:red'>" + value + "</span>");
else $("#selected").html("no select has value a");
}else {
console.log($(this).attr("name"));
$("#selected").html("select sb is <span style='color:red'>" + $(this).attr("name") + "</span>");
}
});
function getRecursivePrevName($node) {
$sb = $($node).prev("[name^='sb']");
if($sb.length) {
if($sb.val()=="a") return $sb.attr("name")
else return getRecursivePrevName($sb);
}
else return null;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<select name="sb1">
<option></option>
<option value="a">a</option>
<option value="b">b</option>
</select>
<select name="sb2">
<option></option>
<option value="a">a</option>
<option value="b">b</option>
</select>
<select name="sb3">
<option></option>
<option value="a">a</option>
<option value="b">b</option>
</select>
<select name="sb4">
<option></option>
<option value="a">a</option>
<option value="b">b</option>
</select>
<select name="sb5">
<option></option>
<option value="a">a</option>
<option value="b">b</option>
</select>
<select name="sb6">
<option></option>
<option value="a">a</option>
<option value="b">b</option>
</select>
<br><br>
<div id="selected">
<div>