【问题标题】:Button does not recognize function i.e. nothing happens on click按钮无法识别功能,即点击时没有任何反应
【发布时间】:2014-07-02 10:32:27
【问题描述】:

如果你能帮助我,我会通过 Paypal 给你买啤酒!我已经被这个问题困扰了几个小时,请听我说完。

我在我的网站上使用实时搜索。当访问者在 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" );
   });

});

谢谢!

【问题讨论】:

    标签: javascript php html button


    【解决方案1】:

    #Ne 按钮是在 JavaScript 运行之前还是之后添加的?如果当浏览器将点击处理程序分配给按钮时该按钮不“存在”,它将无法工作。

    但是,您可以将点击处理程序绑定到按钮的父级,如下所示:

    $("body").on("click", "#Ne", function() {
      $( "#iskanje" ).hide( "slow" );
    });
    

    这表示“将点击处理程序绑定到正文,并且每次点击正文时,检查它是否是 ID 为“Ne”的按钮。

    我不知道#Ne 的直接父级,但不管是哪个都比body 更合适

    【讨论】:

    • @user3794172 哈哈不用担心,这是一段非常简单的代码
    【解决方案2】:

    当您动态附加按钮时,该按钮在 DOM 就绪时不可用。

    使用 event-delegation - on()

    $(document).on("click","#Ne",function() {
        $( "#iskanje" ).hide( "slow" );
    });
    

    【讨论】:

      【解决方案3】:

      试试

      $( "body" ).on('click', '#Ne', function() {
        $( "#iskanje" ).hide( "slow" );
      

      });

      我猜jquery没有找到按钮,因为它是在onload之后插入的……

      【讨论】:

        【解决方案4】:

        首先你必须使用 $(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 
        });
        

        【讨论】:

          猜你喜欢
          • 2013-05-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-01-14
          • 2019-06-18
          相关资源
          最近更新 更多