通过jQuery设置时,元素值不会显示在控制台中

时间:2015-10-10 21:49:54

标签: javascript jquery dom console

我对此感到有些困惑。

为什么#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/

5 个答案:

答案 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的关键字,你很高兴。