0

好的,我不确定是否有人问过这个问题,我到底是怎么做的,但如果是的话,对不起。

基本上,我在一个列表中有 10 个项目。

通过运行此查询:

public function get10items()
{
    $this->query = $this->pdo->prepare("SELECT * FROM items LIMIT 10");
    $this->query->execute();

    while ($row = $this->query->fetch(PDO::FETCH_ASSOC))
    {
        echo '<li id="'.$row['id'].'">'.$row['name'].'</li><br />';
    }
}

这会将数据库中的 10 个项目列出到“<ul>”中。这也将为每个项目设置一个 ID,并使用它自己的编号,就像在数据库中一样。

现在,使用 jquery,我希望 jquery 找到被点击项目的 ID 号。

例如我们的清单:

Hello! [id55]
Hai! [id66]

我点击了项目“你好!”。如何在单击使用 jquery 时找出它的 ID,然后将其用于将来使用?例如,发送带有该 ID 的 ajax 查询等?

<ul class="list">
<?php echo $class->get10items(); ?>
</ul>

所以基本上我可以使用这个:

$(".list").on("click", "li", function() {
    $.post("ajax.php", { get : this.id }, function() {
      blablabla
    });
});

那是对的吗?

4

6 回答 6

3

这将为页面上的每个ulwith触发。如果有 ID,li您可以深入了解。ul

//Using event delegation since not sure when these items are being added
$("ul").on("click", "li", function() {
    console.log(this.id);
});
于 2013-06-14T18:26:47.493 回答
1

像这样向 li 项目添加一个类:

echo '<li class = "list_item_class" id="'.$row['id'].'>'.$row['name'].'"</li><br />';

然后在 jQuery 中:

$('.list_item_class').click(function(){
   console.log(this.id);
});

这将确保只选择类项目,从而为您以后使用模棱两可的选择器省去麻烦。

于 2013-06-14T18:30:17.707 回答
0

试试这个:

在 PHP 中:

public function get10items()
{
$this->query = $this->pdo->prepare("SELECT * FROM items LIMIT 10");
$this->query->execute();
echo '<ul class='someClassName' id='someUniqueId'>';
while ($row = $this->query->fetch(PDO::FETCH_ASSOC))
{
    echo '<li id="'.$row['id'].'>'.$row['name'].'</li><br />';
}
echo '</ul>';
}

在 jQuery 中:

由于您尚未发布您的 html 代码,因此我从document.

$(document).on('click'. '.someClassName > li', function() { // see the same class name "someClassName" is used here. 
//If you give some other class name in your PHP file, change here also.
 alert(this.id);//this.id is what you wanted.
});

您还可以id使用ul

$(document).on('click'. '#someUniqueId > li', function() { // see the same id "someUniqueId" is used here, but with # prefixed. 
//If you give some other id in your PHP file, change here also.
 alert(this.id);//this.id is what you wanted.
});
于 2013-06-14T18:30:02.507 回答
0

使用 jQuery 来做到这一点非常简单:

$('ul').on('click', 'li', function(e) {
    var id = e.target.id;
    // do your stuff with the id
});
于 2013-06-14T18:30:31.827 回答
0

event.target总是指触发事件的元素。
那么,event.target.id是您要查找的 id。

于 2013-06-14T18:31:22.527 回答
0

所有你需要的是:

var clickedId;
$('li').click(function(){
    clickedId = $(this).attr('id');
});

然后 clickedId 将包含被点击元素的 id。

或者您可以使用 tymeJV 的答案,它将处理程序委托给 UL 父级 - 这对于更大的列表会有更好的性能。

于 2013-06-14T18:35:43.417 回答