Javascript 通过jQuery动态添加HTML元素后的额外单击
我在Javascript 通过jQuery动态添加HTML元素后的额外单击,javascript,jquery,jquery-click-event,Javascript,Jquery,Jquery Click Event,我在data.html @item.FullName 在此之后,我假设使用如下的click事件 $('#searchResultContainer').html(''; $.getJSON('@Url.Action(“搜索”,“设备”)”){ s:$('searchStr').val() }, 功能(数据){ 如果(data.success==true){ $('#searchResultContainer').append(data.html); $(文档).on('click','.de
data.html
@item.FullName
在此之后,我假设使用如下的click事件
$('#searchResultContainer').html('';
$.getJSON('@Url.Action(“搜索”,“设备”)”){
s:$('searchStr').val()
},
功能(数据){
如果(data.success==true){
$('#searchResultContainer').append(data.html);
$(文档).on('click','.deviceName',函数(e){
e、 预防默认值();
e、 停止传播();
//console.log('deviceName'+$(this.data('href'));
window.location.href=$(this.data('href');
});
}
});
但当我第一次点击时,什么也没发生。在第二次单击时,它会正常工作。
我尝试在div
上使用focus()
,但如果没有帮助
这种方法也无济于事
我在这里遗漏了什么?将代码移到外部
$(document).on('click', '.deviceName', function(e) {
e.preventDefault();
e.stopPropagation();
// console.log('deviceName ' + $(this).data('href'));
window.location.href = $(this).data('href');
});
谢谢大家
我在这里找到了解决办法
因此,我只是在data.html中使用一个常规的
,然后在之后将注意力集中在div上,并动态添加数据。点击一下就可以了
$('#searchResultContainer').html('');
$.getJSON('@Url.Action("Search", "Devices")', {
s: $('#searchStr').val()
},
function(data) {
if (data.success === true) {
if (data.success === true) {
$('#searchResultContainer').html(data.html);
window.location.hash = '#searchResultContainer';
}
}
});
是的。它没有帮助((而且即使我在动态添加的HTML中使用
,我也必须单击两次才能生效。您在这里缺少一个引号$.getJSON('@Url.Action(“搜索”,“设备”,“s:$('.\searchStr').val()),
@Roy抱歉,这不是问题所在。它仅存在于示例代码中。它已被更正。deviceName上的click事件只有在成功解析getJSON响应后才能注册,因此在调用之前单击该元素不起任何作用是正常的。为什么要将click事件附加到异步f中的文档中unction?@randomSoul我只是想弄明白为什么我需要点击两次。起初我把它放在异步函数之外,但我也不工作。