2013-04-25 3 views
0

Я смотрел кучу кода, ни один не работал, и я, вероятно, что-то пропустил. Единственное, что работало для меня в jquery и javascript, было document.write. Я не знаю, если есть что-то не так с кодом, или если я должен включать в себя что-тоКак изменить текст кнопки html с jquery

<html> 
<head> 
</head> 
<body> 

<script type="text/javascript"> 
    $('#klik').click(function() { 

     $('#klik').text('test'); 

    }); 
</script> 

<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script> 


<button id="klik">Click me!</button> 

</body> 
</html> 
+1

В комментарии к удаленному ответу вы спросили: «Почему onload требуется, когда мне нужно, чтобы событие срабатывало при нажатии кнопки?» Проблема заключается не в клике, а в * подключении * к элементу. Когда вы делаете '$ (" # klik "). Click (...);', первая часть - '$ (" # klik ")' - просматривает элемент с этим идентификатором в DOM. Но поскольку ваш скрипт * до * вы определяете этот элемент, он еще не существует, поэтому обработчик не привязан ни к чему, и поэтому код в нем никогда не запускается. Если вы просто переместите свой код * после *, вы определили элемент (моя рекомендация) или или используете 'ready' (Neal's), он существует. –

ответ

0

Проблема здесь в том, что при запуске ваш код, нет DOM элемент с ID klik. Таким образом, ваш код, связанный с обработчиком событий, ничего не делает.

Если вы просто переместить элемент scriptпод где вы определяете, что элемент (и под которой вы включаете JQuery, так как вы полагаетесь на JQuery загружаемой), он будет работать:

<html> 
<head> 
</head> 
<body> 
<button id="klik">Click me!</button> 
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    // Since this doesn't run until the element exists, it works 
    $('#klik').click(function() { 

     $('#klik').text('test'); 

    }); 
</script> 
</body> 
</html> 

Поочередно , если вы предпочитаете, вы можете использовать ready событие, которое не стрелял, пока все DOM элементов в HTML не были созданы:

<html> 
<head> 
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    $(function() { // <== This sets up a handler for the `ready` event 

     // Since this doesn't run until the `ready` fires, the element exists, and it works 
     $('#klik').click(function() { 

      $('#klik').text('test'); 

     }); 

    }); 
</script> 
</head> 
<body> 
<button id="klik">Click me!</button> 
</body> 
</html> 

Запрет действительно хороший причина использовать ready, лучше всего положить script в конце body, непосредственно перед закрывающим тегом </body>, так что это после всех элементов, на которых вы можете работать (и не замедляет воспринимаемую загрузку вашей страницы).

Ссылки:

1

Вы должны включить JQuery, прежде чем использовать его, а также дом не имеет кнопку, когда вы пытаетесь получить доступ к этому

Рабочая скрипка здесь: http://jsfiddle.net/p3LuH/

<html> 
<head> 
</head> 
<body> 

<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script> 

<button id="klik">Click me!</button> 
<script type="text/javascript"> 
     $('#klik').click(function() { 

      $('#klik').text('test'); 

     }); 
</script> 
</body> 
</html> 
+0

Как глупо от меня ... большое спасибо! :) –

+0

Код сценария должен быть ниже декларации самого элемента? Я просто подумал, что порядок не имеет значения ... –

+0

Да. Вам нужно понять, что этот код делает :: $ ('# klik'). Click (function ... {}) -> Он находит элемент klik и присоединяет к нему прослушиватель кликов (function ... {}) , – hop

Смежные вопросы