我在我的网站上使用实时搜索。当访问者在index.php页面上的表单中键入内容时,表单会给出结果,或者如果在数据库中找不到任何内容,它会通过echo函数在表单下的index.php页面上输出一个按钮。 (运行搜索表单的页面是search.php)。
这意味着此按钮(在id #Ne下)不在index.php页面HMTL上,而是通过search.php回显到索引页面。
我要做的是用其中一个按钮隐藏搜索表单。搜索表单位于id #iskanje下的index.php页面上。
这是我正在使用的javascript。如果我把这个脚本放在index.php页面上没有任何反应,如果我把它放在search.php页面上,它会崩溃整个搜索表单。
<script>
$( "#Ne" ).click(function() {
$( "#iskanje" ).hide( "slow" );
});
</script>
这是index.php页面上的HTML:
<div id="iskanje" class="arcus-content divider-2">
<div id="main">
<div class="row services-i ">
<!-- Naslov -->
<div class="icon"></div>
<h5 class="title">Za katero vrsto storitev bi radi oddali vaše povpraševanje?</h5>
<!-- Input -->
<input type="text" id="search" autocomplete="off">
<!-- Rezultati -->
<h4 id="results-text"> <b id="search-string"></b></h4>
<ul id="results"></ul>
</div>
</div>
</div>
这是search.php页面的一些摘录:
$text = '<button id="Ne"><i class="icon-white"></i>Želim oddati povpraševanje</button>';
这是整个回声,如果找不到结果。
echo($output . " " . $text);
我希望我已经足够清楚了。如果你可以帮我解决这个问题,我甚至可以提供源文件。
我也试过
$( document ).ready(function() {
$( "#Ne" ).click(function() {
$( "#iskanje" ).hide( "slow" );
});
});
谢谢!
答案 0 :(得分:0)
在运行JavaScript之前或之后是否添加了#Ne
按钮?如果当浏览器将单击处理程序分配给按钮时按钮不“存在”,则它将不起作用。
但是,您可以将单击处理程序绑定到按钮的父级,如下所示:
$("body").on("click", "#Ne", function() {
$( "#iskanje" ).hide( "slow" );
});
这说“将点击处理程序绑定到正文,每次点击正文时,检查它是否是ID为”Ne“的按钮。
我不知道#Ne
的直接父母,但无论如何都比body
答案 1 :(得分:0)
当您正在动态附加按钮时,DOM上的按钮不可用。
使用 event-delegation - on() ,
$(document).on("click","#Ne",function() {
$( "#iskanje" ).hide( "slow" );
});
答案 2 :(得分:0)
尝试
$( "body" ).on('click', '#Ne', function() {
$( "#iskanje" ).hide( "slow" );
});
我猜jquery没有找到按钮,因为它是在onload之后插入的......
答案 3 :(得分:0)
首先你必须使用$(document).ready来等待DOM加载 第二件事是使用jquery post还是get方法? 如果您的答案是肯定的,那么您需要使用.done()方法
$.post(url,{argumets},function(data){
//data is what is retrieved from the search.php
// could be empty result in our case we are sending button back
// or displaying results in case we have some results
}).done(function(){
//put here the button code
// this should work for you
});