.val()在Jquery中无法正常工作

时间:2015-12-06 13:46:44

标签: javascript jquery html console

我在Jquery中有一个片段,如下所示

$(document).ready(function() {
    $('button#company').click(function() {
        var id = 0;
        var div = $(this).parents('div');
        var names = div.find('p[data-name*=name'+id+']');
        $.each(names, function(key,value) {
            console.log(value);
        } );
        console.log('ok');
    });
});

我在控制台中有以下结果,如预期的那样

<p class="hidden" data-name="name0_0"> 
<p class="hidden" data-name="name0_1"> 
<p class="hidden" data-name="name0_2">
ok

问题是,当我使用console.log(value.val());时。 所有脚本停止,任何事情发生,任何错误,甚至没有打印。

当我尝试调试并在console.log(value.val())中放置断点时,脚本会在行中停止,但任何事情都会发生。

我也尝过了.text().html(),我遇到了同样的问题。

console.log(names)导致:

 Object { 0: <p.hidden>, 1: <p.hidden>, 2: <p.hidden>, 3: <p.hidden>,
 4: <p.hidden>, length: 5, prevObject: Object, context:
 <button#company>, selector:
 "p[data-name*=name0]" }

HTML是:

<div>
    <p class="hidden" data-name="name0_0">James</p>
    <p class="hidden" data-name="name0_1">John</p>
    <p class="hidden" data-name="name0_2">Carl</p>
    <button id="company" class="btn btn-default">Go!</button>
</div>

2 个答案:

答案 0 :(得分:1)

您的案例中的valuep html元素(不是jQueryfied),因此它没有.val().text().html()函数(这些都是jQuery函数)。

您可以使用DOM节点属性,如下所示:value.innerHtml

或像这样使用jQuery:$(value).text()

答案 1 :(得分:0)

您需要使用

 $.each(names, function(key,value) {
        console.log($(value).attr('data-name'));
    } );

这是一个小提琴https://jsfiddle.net/z8wngq2v/

val()用于从输入读取值。 text()用于读取包含在目标元素中的文本 html()用于读取目标元素中的html内容。

您正在尝试读取标记内的属性。

此外,您需要jQuerify您的选择,以便您可以使用jQuery函数。