Как я могу ссылаться на элемент, который содержит событие из вызываемой функции? - PullRequest
0 голосов
/ 24 апреля 2009

Как внутри функции fireAlert () я могу ссылаться на элемент, который ее вызвал, без необходимости передавать this в качестве аргумента через ссылку?

<script type="text/javascript">

//function
function fireAlert(){
    alert();
}

</script>

<a href="javascript:;" onclick="fireAlert();">Fire</a>

Ответы [ 2 ]

1 голос
/ 24 апреля 2009

Существуют более простые способы сделать это с jQuery , но вот как это делается без него:

ОБНОВЛЕНИЕ: Пожалуйста, попробуйте следующий код HTML / Javascript. Обратите внимание, как я прикрепляю событие onclick внутри window.onload вместо того, чтобы указывать его как атрибут в элементе.

В этом примере я прикрепляю событие ко всем тегам привязки на странице, но вы можете заменить getElementsByTagName на getElementById для конкретного.

<html>
    <head>
        <script language="javascript">
        function fireAlert(e)
        {
            var whoCalled = e ? e.target : event.srcElement;

            alert(whoCalled.innerHTML);
        }
        window.onload=function()
        {
            var allHrefs = document.getElementsByTagName("a");
            for(i=0;i<allHrefs.length;i++)
            {
                allHrefs[i].onclick=fireAlert;
            }
        }
        </script>
    </head>
    <body>
        <a href="#">Hello #1</a>
        <a href="#">Hello #2</a>
        <a href="#">Hello #3</a>
        <a href="#">Hello #4</a>        
    </body>
</html>
0 голосов
/ 24 апреля 2009

Как сказал Хосе, с jQuery было бы легко.

$(document).ready(function()
{
    $("a").click(function()
    {
        // this == the clicked element
    });
});
...