Использование тега <button>и jQuery в IE8 - PullRequest
2 голосов
/ 16 ноября 2011

У меня есть простая строка кода Javascript

$('<button>').attr({ 'type': 'button' }).css({ 'cursor': 'pointer' }).text('Button').click(function  () { alert('clicked'); }).appendTo($('#btn'));

HTML-код еще проще

<div id='btn'>Click this button</>

Все работает при запуске этого кода FF, как показано здесь на jsfiddle http://jsfiddle.net/kevinle/jJbNt/6/. Но он не работает на IE8.

Каково было бы объяснение (была ли задокументирована эта проблема где-то, что я пропускаю) и каков был бы обход?

Ответы [ 6 ]

3 голосов
/ 16 ноября 2011

Может быть, правильно закрыть элемент <div>?

<div id='btn'>Click this button</div>

РЕДАКТИРОВАТЬ

ОК, проверил его более тщательно и обнаружил, что вызов .attr() приводил в тупик JavaScript JavaScript.двигатель.После удаления этого из вашей цепочки jQuery, он работал в IE8.

Если вы подумаете об этом, так как вы в любом случае создаете <button>, вам не нужно устанавливать type в "button".

$('<button>')
    //.attr({ 'type': 'button' })
    .css({ 'cursor': 'pointer' })
    .text('Button')
    .click(function  () { 
        alert('clicked'); 
    })
    .appendTo('#btn')
    ;

http://jsfiddle.net/9xUj5/

1 голос
/ 16 ноября 2011

У вас куча проблем:

  1. В старых версиях IE есть некоторые проблемы с тегом <button>, которые могут быть или не быть вашей проблемой здесь.
  2. В теге кнопки отсутствует атрибут типа.
  3. Вам не хватает закрывающей </div> в вашем HTML.
  4. Вы должны использовать <input type="button"> вместо.

См. Здесь: http://jsfiddle.net/jfriend00/e8eGW/ для рабочей версии.

<div id='btn'>Click this button</div>

$('<input type="button" value="Button">').css({ 'cursor': 'pointer' }).click(function  () { alert('clicked'); }).appendTo($('#btn'));
0 голосов
/ 11 июня 2013

Это работает для меня для ie8

Jquery:

$('button.buttonLink').click(function(){
  window.location = $(this).parent('a').attr('href');
});

HTML:

<a href="logout.php"><button class="buttonLink">LOGOUT</button></a>
0 голосов
/ 16 ноября 2011

Кажется, что IE8 и старше имеют проблемы с анализом атрибута 'type'.Удаление этого или обновление jQuery до 1.7 исправляет проблему.

0 голосов
/ 16 ноября 2011

просто возьмите .attr(...), и он будет работать нормально ( пример ).

button не имеет атрибута типа, который виден в IE из JavaScript;ты думал о input?

0 голосов
/ 16 ноября 2011

Попробуй http://jsfiddle.net/jJbNt/16/ - Не должно быть, попробуйте.

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