2013-05-24 3 views
0

Где-то я ошибся в btn.attr(), но не могу его найти. Или, видимо, это не работает, как я думал, это так, так что теперь я смущен. Я мог бы сделать это в javascript с помощью «с», но мне бы хотелось узнать, как это сделать в jquery. Так вот код:Множество атрибутов с jquery

function setattr(id, value) { 
    var btn = document.createElement('input'); 
    btn.setAttribute('type', 'button'); 
    btn.attr({ 
     id: id, 
     class: "btnclass", 
     value: "value" 
     });}; 

Мог ли я также использовать $ (это) как-то?

+1

Вы пропускает ' "'' здесь значение:" value' .. –

+0

"значение"<- вам нужно еще одну двойную кавычку. –

+0

nix so hawkeyed. :) –

ответ

7

Это правильный путь, но

  • у вас есть проблемы синтаксиса (строка "value" не замкнут)
  • btn является DOM элемент, а не JQuery один
  • class зарезервированное слово

Сделайте это:

$(btn).attr({ 
    id: id, 
    "class": "btnclass", 
    value: "value" 
}); 

Обратите внимание, что эти ошибки должны были быть обнаружены при просмотре консоли вашего браузера.

+0

http://api.jquery.com/attr/ – Fibrewire

+0

Отлично. Это ответ, который я ожидал. Класс был проблемой. Значение Я добавил его здесь в stackoverflow. Это не было в исходном коде, и я также пробовал $ (btn), но, очевидно, классифицировал ошибку. Это сценарий greasemonkey, поэтому, к сожалению, нет отладки :(Большое спасибо. Я приму ваш ответ за 4 минуты :) – viper

+0

На самом деле '' class ''не требуется. Я просто проверил его без «», и он отлично работает. :/'$ (btn)', должно быть, была проблемой. Это странно. Я должен был сделать что-то еще неправильно, когда я пытался это сделать. – viper

0

Вместо:

var btn = document.createElement('input'); 
... 

Вы можете просто:

var btn = $('<input type="button" id="'+id+'" class="btnclass" value="value"/>'); 

Вы можете назначить это на свою страницу с помощью .appendTo(), .prependTo() или различных других методов JQuery предоставляет.

JSFiddle example.

+0

Это намного чище и удобочитаемо использовать 'attr' как OP. –

+0

Чище и удобочитаемо? Вы всегда можете отделить атрибуты к объекту, как это делает нижеследующий ответ Palash Mondal, если вы хотите, чтобы он был «более чистым и читаемым». Это в основном одно и то же. –

0

Использование JQuery вы можете сделать это:

function setattr(id, value) { 
    var $btn = $('<input/>', { 
     id: id, 
     class: "btnclass", 
     type: 'button', 
     value: value 
    }); 
} 

Пожалуйста, не забудьте добавить новый btn к element.

0

попробовать это Demo

function setattr(id, value) { 
var btn = document.createElement('input'); 

$(btn).attr({ 
    type: 'button', 
    id: id, 
    class: "btnclass", 
    value: value 
}); 
//bind event 
$(btn).on('click', function(){ 
    alert('work....'); 
}); 
    $('body').append(btn); 
}; 
+1

'bind()' устарел, вы должны использовать ['on()'] (http://api.jquery.com/on/). –

+0

@JamesDonnelly да, я изменил :) –

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