试图为元素找到正确的jQuery选择器

时间:2012-05-22 09:00:22

标签: jquery ajax

以下是我的标记示例:

<li class="websites" id="3">
    <span class="id">3</span>
    <span><a href="http://www.google.com"><span class="url">www.google.com</span></a></span>
    <span class="action"><span class="edit">edit</span> | <span class="delete">delete</span></span>
</li>

这是我的jQuery,我试图通过ajax将此网站的id(3)传递给另一个脚本。

$('.delete').click(function(){
        var id = $(this).find('span.id').html();

        $.ajax(
            {
                type:    "POST",
                url:     "edit.php",
                data:    ({"id":id}),
                cache:   false,
                success: function(message)
                {
                    $('#'+message).fadeOut('slow');                 
                } // end AJAX return
            }); // end AJAX call
    });

当我检查我的POST标题时,我可以看到id的值为空,所以很明显我尝试设置它是错误的。

正如您所看到的,我在实际的li元素中加了另一个带有类id的范围,并且具有相同的值。

使用哪一个功能无关紧要。

感谢。

4 个答案:

答案 0 :(得分:4)

var id = $(this).closest('li.websites').attr('id');

最近找到与选择器匹配的$(this)祖先,在您的情况下,li与班级websites

http://api.jquery.com/closest/

答案 1 :(得分:2)

您可以尝试此选择器

var id = $(this).closest('li').attr('id');

答案 2 :(得分:2)

经测试,它有效。

<script type="text/javascript">

    $(document).ready(function(){

        $('.delete').click(function(){

         var id = $(this).parents('li.websites').children('span.id').html();


        });


    });

</script>

答案 3 :(得分:1)

尝试

var id = $(this).parent().parent().get(0).id;