Javascript 元素仅在console.log中输出时找到
我正在打以下电话:Javascript 元素仅在console.log中输出时找到,javascript,jquery,dom,Javascript,Jquery,Dom,我正在打以下电话: $.ajax({ type: 'POST', url: '<?= POST_CALENDAR_GET_EVENT; ?>', data: { 'token': $('meta[name=token]').attr("content"), 'id': calEvent.id }, dataType: 'JSON', complete: function (data) {
$.ajax({
type: 'POST',
url: '<?= POST_CALENDAR_GET_EVENT; ?>',
data: {
'token': $('meta[name=token]').attr("content"),
'id': calEvent.id
},
dataType: 'JSON',
complete: function (data) {
var $event = $('#myEditEvent');
console.log($event.find('input[my_name="title"]'));
$event.find('input[my_name="title"]').val(data.title);
$event.find('input[my_name="date"]').val(data.date);
$event.find('input[my_name="start_time"]').val(data.start_time);
$event.find('input[my_name="end_time"]').val(data.end_time);
$event.find('input[my_name="street1"]').val(data.street1);
$event.find('input[my_name="street2"]').val(data.street2);
$event.find('input[my_name="city"]').val(data.city);
$event.find('input[my_name="state"]').val(data.state);
$event.find('input[my_name="zip"]').val(data.zip);
$("#myEditEvent").modal();
NProgress.done();
}
});
根据我的经验,当脚本找不到DOM元素,但从控制台运行相同代码时可以找到DOM元素时,这是因为脚本是在浏览器有机会呈现相关DOM元素之前执行的。脚本是否位于HTML页面的顶部?如果是这样,请尝试以下方法:
$(document).ready(function () { /* place or call your code here */ })
确保在页面完全加载之前脚本不会启动。因此,事实证明,问题其实很明显: 您必须使用
success
回调,而不是使用complete
回调concomplete
不获取作为参数传入的响应,而是jqXHR
对象
由于data
不引用响应,data.title
和所有其他属性将返回undefined
,这使得.val
实际获取值,而不是设置值
需要澄清的是:问题与查找或未查找元素无关。您是否尝试使用此:$('input[my_name=“title]”)。val()?是否确实执行了
complete
回调?AJAX调用是否有任何错误?@Pavlo:我需要它位于#myEditEvent div.@Zero21xxx Yea,console.log($event.find('input[my_name=“title”]”)中;运行时,我从JQuery返回以下对象:[input,prevObject:JQuery.fn.JQuery.init[1],上下文:document,选择器:“#MyEditeEvent input[my_name=“title”]”,构造函数:function,init:function…]如果是这样的话,那么就找到了元素,那么问题出在哪里?我的代码在所有HTML之后都位于页面底部。我把它放在我创建的一个对象中。而该调用仅在单击事件时调用。。。
$(document).ready(function () { /* place or call your code here */ })