使用jQuery从html元素传递参数

Bri*_*nga 3 javascript jquery

我第一次使用jQuery并需要一些帮助.我有html,如下所示:

<div id='comment-8' class='comment'>
    <p>Blah blah</p>
    <div class='tools'></div>
</div>

<div id='comment-9' class='comment'>
    <p>Blah blah something else</p>
    <div class='tools'></div>
</div>
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用jQuery向.tools div添加跨度,这些div在单击时调用variouis函数.函数需要接收父注释的id(整个'comment-8'或只是'8'部分),这样我就可以显示有关注释的表单或其他信息.

我到目前为止:

<script type='text/javascript'>

    $(function() {
        var actionSpan = $('<span>[Do Something]</span>');
        actionSpan.bind('click', doSomething);

        $('.tools').append(actionSpan);
     });

     function doSomething(commentId) { alert(commentId); }

</script>
Run Code Online (Sandbox Code Playgroud)

我坚持如何填充doSomething的commentId参数.也许不是id,我应该传递对被点击的跨度的引用.这也许会很好,但我不确定如何做到这一点.

谢谢,Brian

Jim*_*Jim 6

使用事件对象作为第一个参数调用事件回调,您不能以这种方式传递其他内容.此事件对象具有一个target引用其所调用元素的属性,该this变量是对事件处理程序所附加元素的引用.所以你可以做到以下几点:

function doSomething(event)
{
    var id = $(event.target).parents(".tools").attr("id");
    id = substring(id.indexOf("-")+1);
    alert(id);
}
Run Code Online (Sandbox Code Playgroud)

...要么:

function doSomething(event)
{
    var id = $(this).parents(".tools").attr("id");
    id = substring(id.indexOf("-")+1);
    alert(id);
}
Run Code Online (Sandbox Code Playgroud)