我在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>
答案 0 :(得分:1)
您的案例中的value
是p
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函数。