通过jquery将属性添加到新创建的元素

时间:2015-11-17 11:00:17

标签: javascript jquery html

$(document).on('click', "#mybusi_radio", function(){
   alert("Script test");
   $(document).("#mybusi_radio").attr("checked", "checked");

});

我正在尝试添加"已检查","已检查"属性为输入无线电元素。这个元素在页面加载后由一些脚本创建。警报正在工作。如何向此input元素添加属性。请帮忙

3 个答案:

答案 0 :(得分:4)

您可以使用

$(document).on('click', "#mybusi_radio", function () {
    $(this).prop("checked", true);
});

答案 1 :(得分:1)

而不是

$(document).("#mybusi_radio").attr("checked", "checked"); 

使用

$("#mybusi_radio").prop("checked",true); 

答案 2 :(得分:0)

问题是选择器:

$(document).("#mybusi_radio").attr("checked", "checked");

首先,选择document,然后提供'#mybusi_radio'的参数,但不提供应该传递该参数的命名方法;因此您有语法错误。

您是否编辑过它以提供适当的方法,例如find(),以提供:

$(document).find('#mybusi_radio').attr('checked', 'checked');

这将(显示 1 )起作用。

该方法存在的问题是,您在on()方法的匿名函数中搜索整个文档中已有参考的元素:它' s { {1}}(DOM节点)或this(包含DOM节点的jQuery对象)。

此外,您对$(this)事件作出反应,该事件将捕获元素本身的点击次数,但不会对用户点击关联的click元素作出反应;所以我建议改为使用<label>事件来提供:

change

或者,为了避免在DOM节点完全足以满足此用例时不必要地使用jQuery:

$(document).on('change', "#mybusi_radio", function () {
    $(this).prop("checked", true);
});

但这有点奇怪,因为您有效地阻止用户更改元素$(document).on('change', "#mybusi_radio", function () { this.checked = true; }); / un - checked状态不必要地将它设置为checked,这将是元素的默认行为(假设它确实是类型checked的{​​{1}})。

重新阅读您的问题后,您似乎正在向页面添加元素(不知何故),并希望将其初始状态设置为<input>?如果确实是用例,那么你可以简单地在创建它的时候设置元素的状态(如果你选择向我们展示创建和附加的脚本,那么对你来说会更有用)相关要素):

radio
  1. 由于checked并未专门更新元素的基础属性,因此当您可能会惊讶地发现// creates an <input> element: $('<input />', { // sets the 'type' attribute/property to 'radio': 'type' : 'radio', // sets the id of the <input> to // 'mybusi_radio': 'id' : 'mybusi_radio', // sets the 'checked' property to true // Boolean (not a string): 'checked' : true // appends the created <input> to the element // identified by its id, of 'parentElementID': }).appendTo('#parentElementID'); 属性未在代码中更新/反映时被检查的无线电输入表现为未经检查的无线电输入。因此,如果您使用支持attr() 2 的jQuery版本,使用 checked,则更为可取。
  2. jQuery 1.6及更高版本,因此应该使用支持/实现prop()的jQuery版本。
  3. 参考文献: