jquery - начиная с элемента, переданного в функцию через этот указатель - PullRequest
3 голосов
/ 12 октября 2009

Я очень новичок в jQuery, так что это может быть действительно глупым вопросом. :-) Я пытаюсь заставить что-то вроде следующего работать:

<html>
<head>
    <title>JQuery test</title>
    <script type="text/javascript" src="http://www.google.com/jsapi"></script>
    <script type="text/javascript">
      google.load("jquery", "1"); // Load jQuery

      function DoSomething(link)
      {
        $(link).after('<div>hello world!</div>');
      }
    </script>
</head>
<body>
    <a href="javascript: DoSomething(this);">Click!</a>
</body>
</html>

Прямо сейчас это, похоже, ничего не делает. Но если я изменю строку на:

$('a').after('<div>hello world!</div>');

Затем вставляется DIV. Тем не менее, я хочу использовать элемент, переданный в функцию, для управления местом вставки элемента. По сути, я не могу понять, как запустить запрос jQuery на основе элемента, переданного функции через указатель this.

Спасибо за помощь,

~ Джастин

Ответы [ 2 ]

3 голосов
/ 12 октября 2009

С помощью jQuery вы вообще можете вообще не вставлять любой JavaScript в ваш HTML, например: href="javascript: ..." или href="#" onclick="...". Более аккуратный способ - написать запрос для этого элемента и применить поведение оттуда. Самый простой способ нацелить элемент - дать ему идентификатор, но вы можете использовать любой метод, который вам нравится.

<a href="#" id="myLink">Click!</a>

и ваш JQuery:

$('#myLink').click(function() {
    $(this).after("<div>hello world!</div>");
});

Внутри функций обработки событий , this относится к элементу DOM, на который было нацелено событие.

Если вы хотите получить объект jQuery из элемента - просто передайте его конструктору:

$(domElement)

У вас могут быть проблемы из-за того, как вы вызываете обработчик. Попробуйте изменить ссылку на этот стиль:

<a href="#" onclick="doSomething(this)">

Только не забудьте заставить doSomething() вернуть false

1 голос
/ 12 октября 2009

Изменение с <a href="javascript: DoSomething(this);">Click!</a> на <a href="#" onclick="doSomething(this)"> работает.

this имеет смысл только в функциях JavaScript. Обработчики событий типа onclick являются своего рода функцией.

javascript: псевдо-URL не являются функциями. Они не выполняются в контексте какого-либо объекта на странице. Они просто строка. Нажатие на ссылку аналогично вводу этой строки в адресную строку веб-браузера. Следовательно, this даст значение по умолчанию window, глобальный объект, который всегда передается, когда нет конкретного this объекта.

javascript: псевдо-URL-адреса являются полной катастрофой и никогда не должны использоваться ни для чего (ну, кроме букмарклетов). Форма onclick лучше, но вы должны не забыть добавить return false;, чтобы она не переходила по ссылке # и не переходила в верхнюю часть страницы.

(Элемент без ссылки с помощью onclick или стилизованная кнопка может быть более подходящим, чем ссылка, в зависимости от того, что делает SomeSone, что делает DoSomething.)

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