2013-07-05 2 views
4

Вот HTML-кодВызов функции JQuery после нажмите на некотором элементе

<p onclick='javascript:func(this);'>Bla bla bla</p> 

и вот сценарий (написано в заголовке документа).

function func(e) { 
    var t = e.text(); 
    console.log(t); 
} 

Это не работает, и я не понимаю, почему. Сообщение об ошибке «Объект № не имеет текстового текста метода».

+0

попробовать с .innerHTML – Sergio

+0

Я не вижу JQuery. –

ответ

5

Оберните его в обертку jQuery. .text() - это метод jQuery, а ваш элемент e - простой элемент DOM Javascript, поэтому вам нужна обертка jQuery.

var t = $(e).text(); 

Замечание: ненавязчивые назначения обработчика событий предпочтительнее встроенных обработчиков. Например:

$(document).ready(function(){ 
    $('p').click(function(){ 
     var t = $(this).text(); 
     console.log(t); 
    }); 
}); 

выше использует JQuery, чтобы назначить обработчик щелчка (вместо встроенного Javascript) и так из-за того, элемент может быть доступен в this для обычного объекта Javascript, или $(this) для объекта JQuery ,

+0

спасибо. Оно работает. – enjaku

0

Fiddle

Это простая яваскрипт и будет делать то, что вы просите.

function func(e) { 
    var t = e.innerHTML; 
    console.log(t); 
} 
0

Попробуйте использовать innerHTML:

function func(e) { 
    var t= e.innerHTML; 
    console.log(t); 
} 
+0

Извините, если бы вы только что отредактировали его, но это было в списке обзора LQP ;-) –

0

Используйте innerText, если вы не используете JQuery.

function func(e) { 
    var t = e.innerText; 
    console.log(t); 
} 
0

правый путь:

HTML:

<p onclick='func(this);'>Bla bla bla</p> 

вместо

<p onclick='javascript:func(this);'>Bla bla bla</p> 

Javascript:

function func(e) { 
    var t = e.innerHTML; 
    console.log(t); 
} 
0

JQuery спроектирован так, чтобы быть ненавязчивым. Если ваше добавление onclick атрибутов везде, что вы делаете это неправильно.

Вместо этого вы должны быть добавление слушателей событий

<p>Blah Blah Blah</p> 

Jquery/Script

$(document).ready(function(){ 
    $('p').on('click', function(){ 
     console.log($(this).text()); 
    }); 
});