我对此感到有些困惑。
为什么#edit的value属性在控制台中没有改变?
我错过了什么吗?
/// <reference path="angularjs/angular.d.ts" />
/// <reference path="jquery/jquery.d.ts" />
/// <reference path="angular-ui-router/angular-ui-router.d.ts" />
/// <reference path="angularjs/angular-resource.d.ts" />
... UPDATE
经过非常不相关的讨论而不是ks到@charlietfl我发现了一个明显不同的地方https://jsfiddle.net/n4pe07j6/1/
答案 0 :(得分:4)
如果您只想在开头使用__
定位ID,那么将点击处理程序添加到DOM中的每个元素都是非常昂贵的。
使用单个委派的点击处理程序和一个以这些元素为目标的选择器。
$(document).on('click', '[id^="__"]', function(e){
$('#edit').val($(this).html());
$('#key').val(this.id)
});
编辑:输入的属性值不是表单提交的相关值。表单控件的 value属性与该元素的 value属性之间存在差异。它是提交的value属性
的 DEMO 强>
答案 1 :(得分:0)
有很多更好的方法来写这个,但是你刚刚开始为什么不做类似的事情。
find_by_
答案 2 :(得分:0)
答案是:&#34; var content = this.html();&#34;无效。 javascript元素上没有.html(),。html()来自JQuery lib,因此它需要是一个JQuery元素,所以&#34; var content = $(this).html();&# 34;使它工作。我认为这就是你从所有其他评论中得到的。
答案 3 :(得分:0)
甚至是这个。
<form>
<input id="edit" value="" type="text">
<input id="key" value="" type="hidden">
<input value="Save" type="submit">
</form>
</div>
<ul>
<li> <span class="cursor" id="__optin-1">Value 1</span> </li>
<li> <span class="cursor" id="__optin-2">Value 2</span> </li>
<li> <span class="cursor" id="__optin-3">Value 3</span> </li>
</ul>
$('.cursor').click(function( event ) {
$('#edit').val($(this).html());
$('#key').val($(this).attr('id'));
});
答案 4 :(得分:-1)
只需更换“这个&#39;使用$(this)和用户.attr(&#39; id&#39;)而不是.id的关键字,你很高兴。