【发布时间】:2016-01-08 15:28:39
【问题描述】:
我对此有点困惑。
为什么控制台中#edit的value属性没有变化?
我错过了什么吗?
<div class="editor">
<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>
<script type="text/javascript">
$( "*", document.body ).click(function( event ) {
event.stopPropagation();
var edit = $('#edit');
var key = $('#key');
var id = this.id;
var content = this.html();
if ( id.substring(0,2) == "__") {
console.log(this.id);
console.log(content);
edit.val(content);
key.val(id);
}
});
</script>
更新...
经过与@charlietfl 的许多无关的讨论,我发现了一个明显的差异,正如这里所介绍的https://jsfiddle.net/n4pe07j6/1/
【问题讨论】:
-
当你在 jQuery 中有 $(this) 时,为什么要使用这个引用?
-
因为使用原生 DOM
this比使用 jQuery 的$(this)及其方法更便宜,而且在很多情况下更简单。 -
move 重要的是为什么会有全局点击事件。?无论有人点击哪里,您都希望这种情况发生吗?你声明 id 然后在日志中使用 this.id 为什么?示例中的“this”也很不清楚....也就是说,这不取决于您单击的内容还是document.body。
-
@Seabizkit - 因为我必须确定单击时单击了哪个元素,它可以位于文档中的任何位置,并且不必遵循任何特定模式。你有更好的建议吗?
-
这段代码的目的是什么?会抛出很多错误,因为并非所有元素都有 id 并且许多元素没有 innerHTML。将一个处理程序绑定到
document并使用事件目标也会更有意义
标签: javascript jquery dom console