我有一个UL和UL的下拉框。李喜欢以下:
<ul class="dropdown-menu" id="rmenu" role="menu">
<li><a href="#" data-value="photo">photo</a></li>
<li><a href="#"data-value="video">video</a></li>
<li><a href="#"data-value="audio">audio</a></li>
</ul>
<input type="hidden" name="search_param" value="all" id="search_param">
我上面还有一个隐藏字段,现在我想根据LI中的值选择更改值和隐藏字段的名称。
我写下jquery
代码如下:
<script type='text/javascript'>
$("#rmenu").on("click", "a", function(e){
e.preventDefault();
var $this = $(this).parent();
$("#search_param").val($this.data("value"));
$("#search_param").name($this.data("value"));
});
</script>
但它不起作用,甚至没有改变名称的价值,我已经尝试了所有选项,但没有运气。
答案 0 :(得分:2)
jQuery中没有方法name()
。要更改名称属性,请改用 attr()
方法。
$("#search_param").attr('name',$this.data("value"));
此外,无需获取父元素,因为设置为a
的数据属性不会标记为li
。
var $this = $(this);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="dropdown-menu" id="rmenu" role="menu">
<li><a href="#" data-value="photo">photo</a>
</li>
<li><a href="#" data-value="video">video</a>
</li>
<li><a href="#" data-value="audio">audio</a>
</li>
</ul>
<input type="hidden" name="search_param" value="all" id="search_param">
<script type='text/javascript'>
$("#rmenu").on("click", "a", function(e) {
e.preventDefault();
var $this = $(this);
$("#search_param").val($this.data("value"));
$("#search_param").attr('name', $this.data("value"));
});
</script>
答案 1 :(得分:2)
您的$ this中有父(li
),但您有a
标记中的数据,您也可以使用.attr('name',val)
更改名称
$("#rmenu").on("click", "a", function(e){
e.preventDefault();
var $this = $(this);
$("#search_param").val($this.data("value"));
$("#search_param").attr('name',$this.data("value"));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="dropdown-menu" id="rmenu" role="menu">
<li><a href="#" data-value="photo">photo</a></li>
<li><a href="#"data-value="video">video</a></li>
<li><a href="#"data-value="audio">audio</a></li>
</ul>
<input type="text" name="search_param" value="all" id="search_param">
答案 2 :(得分:2)
我认为你的方式不会起作用
<ul class="dropdown-menu" id="rmenu" role="menu">
<li><a href="#" data-value="photo">photo</a></li>
<li><a href="#"data-value="video">video</a></li>
<li><a href="#"data-value="audio">audio</a></li>
</ul>
<input type="hidden" name="search_param" value="all" id="search_param">
<script>
$(function(){
$('#rmenu > li > a').click(function(){
var val = $(this).attr('data-value');
$('#search_param').attr('name', val);
$('#search_param').val(val);
});
});
</script>
这应该有效
答案 3 :(得分:1)
试试这个:
<script type = "text/javascript">
$("#rmenu").on("click", "a", function(e){
e.preventDefault();
$("#search_param").attr("name",$(this).data("value"))
$("#search_param").attr("value",$(this).data("value"))
});
</script>