当多个元素时,jquery选择器不会工作

时间:2015-12-27 15:54:31

标签: javascript jquery foreach

我的jquery选择器有点问题。当我只有一个列表项时,jquery代码工作正常。但是当我有多个时,chatid具有第一个列表项的值。为什么我总是第一个列表项的id?

我的html和foreach循环:

   <ul data-role="listview" id="uItem1" data-inset="true">
    <?php foreach ($result as $keyres => $rowres): ?>

        <li><a class="chat" id="<?php echo $rowres['id']; ?>" href="accept.php">chat</a></li>

        <?php endforeach; ?>
    </ul>

我的jquery:

$("#uItem1 > li > a").click(function() {
    var chatid = $("#uItem1 > li > a").attr('id');

    $.ajax({ url: 'read.php',
     data: {chatid},
     type: 'POST',
     success: function(output) {
                //  alert(output);
              }
    });                     

   }); 

3 个答案:

答案 0 :(得分:7)

您需要使用$(this)

var chatid = $(this).attr('id');

当你在php中使用foreach生成元素时,你可能需要

$("#uItem1").on('click',' > li > a',function() {

正如@Rory在评论中提到的那样,您可以使用this.id

答案 1 :(得分:4)

变化:

var chatid = $("#uItem1 > li > a").attr('id');

要:

var chatid = this.id;
var chatid = $(this).attr('id');   // For some reason if the previous didn't work.

答案 2 :(得分:1)

您需要使用this关键字来引用引发事件的元素。从那里你可以得到它的id财产。另请注意,您在$.ajax调用中发送的对象无效,需要密钥和值。试试这个:

$("#uItem1 > li > a").click(function() {
    var chatid = this.id;

    $.ajax({ url: 'read.php',
        data: {
            'chatid': chatid 
        },
        type: 'POST',
        success: function(output) {
            //  alert(output);
        }
    });                     
});