JavaScript: получить элемент, на который нажали - PullRequest
5 голосов
/ 21 сентября 2010

Мне нужно получить нажатый элемент в функции getClickedElement. Как я могу это сделать?

<html>
<head>
  <script>
    function getClickedElement () {
    }
  </script>
</head>
<body>
  <a href="javascript:alert(getClickedElement())" id="test">click me!!!</a>
</body>
</html>

Я могу установить только атрибут href. Я не могу установить событие onclick, потому что эти элементы создаются сторонней библиотекой.

Спасибо.

Ответы [ 4 ]

7 голосов
/ 21 сентября 2010

Невозможно получить выбранный элемент в URL-адресе javascript:.Событие уже завершено, поэтому event.target (или window.event.srcElement для IE) не существует, и ссылки javascript: не вызываются с установленным this (таким образом, вы получаете window).

OfКонечно, если вы знаете ссылка на вопрос id="test", вы можете сделать document.getElementById('test'), но я подозреваю, что скорее упускает смысл того, что вы хотите сделать.

Iможно установить только атрибут href.Я не могу установить событие onclick, потому что эти элементы генерируются сторонней библиотекой.

Исправьте или удалите библиотеку.javascript: URL - это ужасные слова, которые не следует использовать никогда .

Можете ли вы добавить <script> в другом месте страницы?Если это так, вы можете внедрить обработчик событий click в элемент (ы) без дополнительной разметки.например ::

for (var i= document.links.length; i-->0;)
    if (document.links[i] is one of the links you want to target)
        document.links[i].onclick= someHandlerFunction;

function someHandlerFunction() {
    alert(this);
    return false;
}

Действительно, назначение из JS (с on... или через addEventListener с attachEvent откатом для IE) является наилучшим способом добавления обработчиков событий в любом случае.

5 голосов
/ 22 сентября 2013

следующий вопрос statckoverflow дает возможность обнаружить нажатый элемент здесь

$(document).click(function(event) {
    var text = $(event.target).text();
});
2 голосов
/ 21 сентября 2010
<a href="javascript:alert(getClickedElement('test'))" id="test">click me!!!</a>

<script>
function getClickedElement (id) {
    return document.getElementById(id);
}
</script>

или, если вы не можете предсказать идентификатор, вы можете использовать Javascript для прикрепления событий после загрузки страницы. Посмотрите на JQuery. Используйте что-то вроде $('a').click(function() {return this.id; });

0 голосов
/ 16 июля 2013

вы можете передать это как параметр, и тогда вы сможете узнать, какой элемент вы ищете.например:

<html>
<head>
  <script>
    function getClickedElement ($this) {

    }
  </script>
</head>enter code here
<body>
  <a href="javascript:alert(getClickedElement(this))" id="test">click me!!!</a>
</body>
</html>

надеюсь, это поможет вам, это помогло мне:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...