JQuery转换字符串到节点对象
JQuery convert string to Node Object
我想将字符串解析为Node对象。下面的函数应该这样做:
我想获得一个嵌入在li-tag中的input-element,其中input-element可以是单选按钮,也可以只是一个按钮。如果类型为单选,则必须添加标签。
不幸的是,部分:
inputElement = $.parseHTML(this.getFullHtmlTextOf(inputElement) + labelElement);
失败。
this.getKeyValAsInputInLiWithType = function (key, val, isArgument, type, isChecked) {
var liElement, inputElement, labelElement;
liElement = document.createElement('li');
liElement.setAttribute('id', 'li_' + key);
inputElement = document.createElement('input');
inputElement.setAttribute('id', key);
inputElement.setAttribute('type', type);
inputElement.setAttribute('value', val);
inputElement.setAttribute('data-dismiss', 'modal');
// additional attributes for a button
if (type === 'button') {
inputElement.setAttribute('class', 'button button-block btn btn-primary btn-default btn-discussion');
}
// additional attributes for a radio button
if (type === 'radio') {
if (isChecked) {
inputElement.setAttribute('checked', '');
}
// adding label for the value
labelElement = ''<label for="' + key + '"'>' + val + ''</label'>';
inputElement = $.parseHTML(this.getFullHtmlTextOf(inputElement) + labelElement);
}
if (key === addStatementButtonId) {
inputElement.setAttribute('onclick', "$('#'+addArgumentContainerId).show();$('#'+addStatementButtonId).disable = true;");
} else if (type === 'button') {
if (isArgument) {
inputElement.setAttribute('onclick', "new InteractionHandler().argumentButtonWasClicked(this.id, this.value);");
} else {
inputElement.setAttribute('onclick', "new InteractionHandler().positionButtonWasClicked(this.id, this.value);");
}
}
alert(this.getFullHtmlTextOf(inputElement));
liElement.appendChild(inputElement);
return liElement;
};
亲切的问候,
Tobias
您正在尝试向一个DOM元素添加两个元素,实际上创建了一个字符串。只需将这两个元素附加到li。你已经标记了jQuery,但这一件事并不需要它。
...
inputElement.setAttribute('data-dismiss', 'modal');
// now append inputElement
liElement.appendChild(inputElement);
...
if (type === 'radio') {
...
// lose this // labelElement = ''<label for="' + key + '"'>' + val + ''</label'>';
// this will just produce a string even if it worked // inputElement = $.parseHTML(this.getFullHtmlTextOf(inputElement) + labelElement);
labelElement = document.createElement('label');
labelElement.setAttribute('for', key);
labelElement.innerHTML = val;
liElement.appendChild(labelElement);
}
...
演示工作用jQuery来做这些更干净,但无论如何都是最适合你的。
同样,data不是一个属性,即使它在页面加载时呈现为一个属性。https://api.jquery.com/jquery.data/
我知道我来晚了一点,但这一开始也让我很困惑。问题似乎是,jQuery返回数组中解析的元素,即使只有一个元素。
解决方法就是访问正确的数组元素。
改变inputElement = $.parseHTML(this.getFullHtmlTextOf(inputElement) + labelElement);
inputElement = $.parseHTML(this.getFullHtmlTextOf(inputElement) + labelElement)[0];
相关文章:
- 节点导出返回一个空对象
- S3文件上传文件对象使用节点js
- 未定义应为节点模块的对象
- 如何将节点添加到子对象
- 节点发布错误对象的第一个“属性”
- 节点模块对象范围:在所有函数之间共享一个对象
- 在节点中.js“模块”始终是一个对象
- 从组中删除节点(对象、组等)
- 复制节点对象的父节点
- FancyTree:节点对象在拖动到根级别时不正确
- 迭代所有节点对象,而不仅仅是元素对象
- 通过chrome.tabs.sendMessage发送DOM节点对象
- 如何将Firebase中的节点(对象)复制到另一个节点
- 如何在d3教程中映射节点对象到节点id
- 无法访问节点对象中的键值
- 以编程方式向根节点对象添加函数
- 节点对象树如何进入浏览器
- 在dom节点对象上使用jQuery data()与属性
- 需要将循环中创建的节点对象传递到边缘
- JQuery转换字符串到节点对象