无法获取使用PHP创建的DIV的ID

时间:2018-01-10 17:07:42

标签: php post dom dynamic

我有一个用户仪表板页面,每当他们访问它时,它会根据会话电子邮件将所有个人时间都拉到数据库中。它构建了所有项目的列表供他们查看。我希望他们能够点击其中一个项目然后使用div id或value作为MySQL搜索参数指向搜索页面。问题是我无法获得div id ..或value ...或class。当我尝试提醒(this.id)时,它会显示为空白。如果我发出警报(this.className),则显示为未定义。

这是我的代码:

function getAllMyItems_itemsTable2(string $email){
    include 'config.php';
    $sql = 'SELECT * FROM itemsTable WHERE email= :email';
    $stmt = $conn->prepare($sql);       
    $stmt->bindParam(':email', $email, PDO::PARAM_STR);
    $stmt->execute();
    $getResults = $stmt->fetchAll();
    echo '<div class="w3-card w3-white" style="width: 60%; margin: 0 auto; padding: 10px;">';
    echo '<div class="row" style="text-align: left;">';
    echo '<div class="col-md-3" style="border-bottom: solid 1px gray;">Item Name</div><hr>';
    echo '<div class="col-md-3" style="border-bottom: solid 1px gray;">Added Time</div><hr>';
    echo '<div class="col-md-3" style="border-bottom: solid 1px gray;">Pieces</div><hr>';
    echo '<div class="col-md-3" style="border-bottom: solid 1px gray;">Description</div><hr>';
    echo '</div>';
    echo '<div class="row" style="text-align: left;">';
    foreach( $getResults as $row) {
        echo '<div class="col-md-3" id="'.$row['itemName'].'" value="'.$row['itemName'].'"><a href="#">'.$row['itemName'].'</a></div>';
        echo '<div class="col-md-3">'.$row['addedTime'].'</div>';
        echo '<div class="col-md-3">'.$row['pieces'].'</div>';
        echo '<div class="col-md-3">'.$row['description'].'</div>';
    }
    echo "</div>";     
}

我希望能够点击div id = $ row ['itemName']并获取该名称并将其传递到下一页以执行搜索。有没有更好的方法来解决这个问题?

HTML部分:

<div class="resultsContainer" style="text-align: center;">
    <?php
 if(!getNumberOfItems_itemsTable($email) == 0){
        echo getAllMyItems_itemsTable2($email);
        }
        ?>
    </div>


<script>

  $('.resultsContainer').click(function(){
  alert(this.id);
  });

    </script>

1 个答案:

答案 0 :(得分:8)

您只在整个容器上放置了一个click事件。不是你实际点击的。所以这只涉及容器......

由于您在div上没有使用唯一ID的不同类,因此很难为这些div设置click事件。您可能希望在div上添加一个带有id的类。然后,您可以更改事件处理程序以专门响应这些事件。

一个例子:

echo '<div class="col-md-3 actionable" id="'.$row['itemName'].'" value=.....';
                         //^^^^^^^^^^

然后:

$('div.actionable').on('click',function(){
 //^^^^^^^^^^^^^^
    alert( $(this).attr('id') );
});

注意我更改了id的引用,因为你在jquery中,所以更像jquery。也可以保持一致;)