Javascript 仅在放置在 HTML 下方时才起作用

标签 javascript jquery html ajax

我无法找到解决我遇到的以下问题的方法。我正在使用一些 javascript 代码来使我的(实时)搜索工作(通过 ajax)。问题是 Javascript 仅当我将其放置在 HTML 下方时才起作用:

<form action="filter.php" name="filter" method="get" id="filter">
<input type="text" id="search_bar" name="s" placeholder="Type hier je zoekterm..." />
</form>    
<ul id="result"></ul>

Javascript

$("#filter").submit(function(event) {
event.preventDefault();
$("#result").html('');
var values = $(this).serialize();
$.ajax({        
    url: "tracks_content.php",
    type: "get",
    data: values,
    success: function(data){
        $('#result').html(data);
    },
});
 });

 $(this).mouseup(function() {
document.getElementById('result').style.display='none'; 
 });

 $("#result").mouseup(function(){
return false;
 });    

 $("#filter").bind('input',(function(event){
var query = document.getElementById('search_bar').value;
if(query!=""){
    $("#filter").submit();
    document.getElementById('result').style.display='block';
}
else{
    $('#result').html('');
    document.getElementById('result').style.display='none'; 
}
 }));

将 Javascript 放在 HTML 前面时如何使其工作?

最佳答案

这是因为当 JavaScript 位于顶部时,您引用的 HTML 还不存在。

将代码包装在 $( document ).ready() 中。这使得浏览器等待 DOM 加载后再触发 JavScript。

$( document ).ready(function() {
    $("#filter").submit(function(event) {
    event.preventDefault();
    $("#result").html('');
    var values = $(this).serialize();
    $.ajax({        
        url: "tracks_content.php",
        type: "get",
        data: values,
        success: function(data){
            $('#result').html(data);
        },
    });
     });

     $(this).mouseup(function() {
    document.getElementById('result').style.display='none'; 
     });

     $("#result").mouseup(function(){
    return false;
     });    

     $("#filter").bind('input',(function(event){
    var query = document.getElementById('search_bar').value;
    if(query!=""){
        $("#filter").submit();
        document.getElementById('result').style.display='block';
    }
    else{
        $('#result').html('');
        document.getElementById('result').style.display='none'; 
    }
     }));
});

仅供引用,当您有可用的 jQuery 并且已经在使用它时,为什么还要使用 document.getElementById() 呢?

关于Javascript 仅在放置在 HTML 下方时才起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22812831/

相关文章:

javascript - 如何在 textarea 文本更改时保留光标位置?

javascript - 输入数字验证 - 限制仅输入数字或数字,int 和 float 两者

html - 收缩以适合视口(viewport)元属性有什么作用?

javascript - 将 Canvas 颜色限制为特定数组

javascript - 为什么我丢失了 iframe 的 src?

javascript - 防止 matterjs 主体逃离预定义区域

javascript - 在设置更新时更新自定义 slider

javascript - 使用 javascript 更改数据属性

html - 如何淡化不同的背景而不是文本

javascript - CSS图像被子