Home > Backend Development > PHP Tutorial > Regarding the delegate problem of jq

Regarding the delegate problem of jq

WBOY
Release: 2016-09-05 08:59:59
Original
1558 people have browsed it

<code>//PHP
<?php
include "db.php";
if(isset($_POST["category"])){


    $category_query = "SELECT * FROM categories";


    $run_query = mysqli_query($con,$category_query); 
    echo "
<div class='nav nav-pills nav-stacked'>
    <li class='active'><a href='#'><h4>Categories</h4></a></li>
    ";

    if(mysqli_num_rows($run_query)>0){
        
        while($row = mysqli_fetch_array($run_query)){
            $cid = $row["cat_id"];
            $cat_name = $row["cat_title"];

//问题在这里
            echo "
<li><a href='#' class='category' cid='$cid'>$cat_name</a></li>
            ";
        }
        echo "</div>";
    }
}


if(isset($_POST["brand"])){
    $brand_query = "SELECT * FROM brands";
    $run_query = mysqli_query($con,$brand_query);
    echo "
<div class='nav nav-pills nav-stacked'>
    <li class='active'><a href='#'><h4>Brands</h4></a></li>
    ";

    if(mysqli_num_rows($run_query)>0){
        while($row = mysqli_fetch_array($run_query)){
            $bid = $row["brand_id"];
            $brand_name = $row["brand_title"];
            echo "
<li><a href='#'>$brand_name</a></li>
            ";
        }
        echo "</div>";
    }
}

if(isset($_POST["getProduct"])){
    $product_query =  "SELECT * FROM products ORDER BY RAND() LIMIT 0,9";
    $run_query = mysqli_query($con,$product_query);
    if(mysqli_num_rows($run_query) >0 ){
        while($row = mysqli_fetch_array($run_query)){
           $pro_id = $row['product_id'];
           $pro_cat = $row['product_cat'];
           $pro_brand = $row['product_brand'];
           $pro_title = $row['product_title'];
           $pro_price = $row['product_price'];
           $pro_image = $row['product_image'];
           echo "
             <div class='col-md-4'>
                        <div class='panel panel-info'>
                            <div class='panel-heading'>$pro_title</div>
                            <div class='panel-body'>
                                <img style='width:300px;height:300px' src='product_image/$pro_image' />
                            </div>
                            <div class='panel-heading'>$.$pro_price.00
                              <button pid='$pro_id' style='float:right' class='btn btn-danger btn-xs'>AddToCart</button>
                            </div>
                        </div>
                        </div>
           ";
        }
    }

}


?></code>
Copy after login
Copy after login
<code>//JS

 $(document).ready(function() {
    cat();
    brand();
    product();

    function cat() {
        $.ajax({
                url: 'action.php',
                type: 'POST',
                data: {
                    category: 1
                },
            })
            .done(function(data) {
                //console.log(data);
                $("#get_category").html(data);

            });


    }

    function brand() {
        $.ajax({
                url: 'action.php',
                type: 'POST',
                data: {
                    brand: 1
                },
            })
            .done(function(data) {
                //console.log(data);

                $("#get_brand").html(data);

            });


    }


    function product() {
        $.ajax({
                url: 'action.php',
                type: 'POST',
                data: {
                    getProduct: 1
                },
            })
            .done(function(data) {
                //console.log(data);
                $("#get_product").html(data);

            });
    }

    //使用 delegate() 方法。on不能获取
    $("body").delegate(".category", "click", function() {
        alert(123);
    })
    // $(".category").on("click", function(event) {
    //     alert(13);
    // });
})</code>
Copy after login
Copy after login

Why is there no response when clicking when I use the on method? But the delegate does? Is it because this class is written in PHP and cannot be read by on? Or what?

Reply content:

<code>//PHP
<?php
include "db.php";
if(isset($_POST["category"])){


    $category_query = "SELECT * FROM categories";


    $run_query = mysqli_query($con,$category_query); 
    echo "
<div class='nav nav-pills nav-stacked'>
    <li class='active'><a href='#'><h4>Categories</h4></a></li>
    ";

    if(mysqli_num_rows($run_query)>0){
        
        while($row = mysqli_fetch_array($run_query)){
            $cid = $row["cat_id"];
            $cat_name = $row["cat_title"];

//问题在这里
            echo "
<li><a href='#' class='category' cid='$cid'>$cat_name</a></li>
            ";
        }
        echo "</div>";
    }
}


if(isset($_POST["brand"])){
    $brand_query = "SELECT * FROM brands";
    $run_query = mysqli_query($con,$brand_query);
    echo "
<div class='nav nav-pills nav-stacked'>
    <li class='active'><a href='#'><h4>Brands</h4></a></li>
    ";

    if(mysqli_num_rows($run_query)>0){
        while($row = mysqli_fetch_array($run_query)){
            $bid = $row["brand_id"];
            $brand_name = $row["brand_title"];
            echo "
<li><a href='#'>$brand_name</a></li>
            ";
        }
        echo "</div>";
    }
}

if(isset($_POST["getProduct"])){
    $product_query =  "SELECT * FROM products ORDER BY RAND() LIMIT 0,9";
    $run_query = mysqli_query($con,$product_query);
    if(mysqli_num_rows($run_query) >0 ){
        while($row = mysqli_fetch_array($run_query)){
           $pro_id = $row['product_id'];
           $pro_cat = $row['product_cat'];
           $pro_brand = $row['product_brand'];
           $pro_title = $row['product_title'];
           $pro_price = $row['product_price'];
           $pro_image = $row['product_image'];
           echo "
             <div class='col-md-4'>
                        <div class='panel panel-info'>
                            <div class='panel-heading'>$pro_title</div>
                            <div class='panel-body'>
                                <img style='width:300px;height:300px' src='product_image/$pro_image' />
                            </div>
                            <div class='panel-heading'>$.$pro_price.00
                              <button pid='$pro_id' style='float:right' class='btn btn-danger btn-xs'>AddToCart</button>
                            </div>
                        </div>
                        </div>
           ";
        }
    }

}


?></code>
Copy after login
Copy after login
<code>//JS

 $(document).ready(function() {
    cat();
    brand();
    product();

    function cat() {
        $.ajax({
                url: 'action.php',
                type: 'POST',
                data: {
                    category: 1
                },
            })
            .done(function(data) {
                //console.log(data);
                $("#get_category").html(data);

            });


    }

    function brand() {
        $.ajax({
                url: 'action.php',
                type: 'POST',
                data: {
                    brand: 1
                },
            })
            .done(function(data) {
                //console.log(data);

                $("#get_brand").html(data);

            });


    }


    function product() {
        $.ajax({
                url: 'action.php',
                type: 'POST',
                data: {
                    getProduct: 1
                },
            })
            .done(function(data) {
                //console.log(data);
                $("#get_product").html(data);

            });
    }

    //使用 delegate() 方法。on不能获取
    $("body").delegate(".category", "click", function() {
        alert(123);
    })
    // $(".category").on("click", function(event) {
    //     alert(13);
    // });
})</code>
Copy after login
Copy after login

Why is there no response when I click on the on method? But delegate does? Is it because this class is written in PHP and cannot be read by on? Or what?

Use on

for dynamically generated elements
<code> $('body').on('click','.category' , function() {
         alert(123);
     })</code>
Copy after login

Before you use a new API, you should fully understand its function through the documentation.

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template