2013-10-02 33 views
3

如何从outerHTML文本的“data-column”中获取属性的值?如何从outerHTML的文本中获取属性值?

$.each($groupingColumnUl[0].children, function(i1, o1) { 
    alert(o1.outerHTML.prop('data-column'); //.attr('data-column'); //.find('data-column'); 
}); 

的outerHTML内的实际值是

<li class='ui-state-default' data-column='Model'><span style='display:inline-block;' class='ui-icon ui-icon-close'></span>Model</li> 

我想要得到的价值“模型”

+2

为什么不使用'$(o1).data(“column”)'?顺便说一句'outerHTML'返回一个不是jQuery对象的字符串。 [data doc](http://api.jquery.com/data) –

+0

'$(o1.parent).data('column')' – ashley

+0

这里有一篇有趣的文章说不使用“data()”函数... http://lookfirst.com/2011/12/dont-use-jquery-data-method-use-attr.html – fletchsod

回答

2

试试。

$.each($groupingColumnUl[0].children, function(i1, o1) { 
    alert($(o1).data('column')); 
}); 

或(如旧的JQuery的版本):

$.each($groupingColumnUl[0].children, function(i1, o1) { 
    alert($(o1).attr('data-column')); 
}); 
+0

'o1'已经是一个DOM对象,所以你不能使用'get'就可以了。即使o1是一个jQuery对象,您所做的只是获取DOM对象,然后使用jQuery重新包装它。 –

+0

我得到了一个无法识别的“get()”对象错误。 – fletchsod

+0

对不起......由于缺乏信息导致的错误... OP使用带有JQuery函数的DOM对象... = - =编辑但我仍然不知道它是否好。 – Oliboy50

0

outerHTML给你一个刺,而不是一个jQuery对象,所以,如果你想通过jQuery API访问元素的数据属性,你可以尝试:

alert($(o1.outerHTML).data('column') 
+0

我得到了一个未定义的错误...: -/ – fletchsod

+1

如果您将代码发布到jsfiddle,我们可以尝试发现此错误。 –

0

试试下面的

alert($(o1).data('column')); 
+0

我有一个无法识别的“父()”对象错误。 – fletchsod

+0

'o1'不是'jQuery'对象,它是'DOM'对象。此外,这将获得父母的数据,OP是使用'outerHTML'只是得到DOM对象的HTML而不是父母。 –

+0

@PatrickEvans更新了它。感谢您指出它# –

0

OuterHTML文字:从outerHTML

<input id ="UserControl" value ="New Custmer" defaultvalue="Cust415875" clientcontrolname = "CusterInfo"> 

葛亭clientcontrolname(属性)值:

var strGrpAssoc = oGrpAssoc.outerHTML + "</input>"; 
    var xmlGrpAssoc = loadXMLString(strGrpAssoc.toLowerCase()); 
    var sClientControlName = xmlGrpAssoc.getElementsByTagName("input")[0].getAttribute("clientcontrolname"); 

function loadXMLString(txt) { 
    if (window.DOMParser) { 
     parser = new DOMParser(); 
     xmlDoc = parser.parseFromString(txt, "text/xml"); 
    } 
    else // code for IE 
    { 
     xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
     xmlDoc.async = false; 
     xmlDoc.loadXML(txt); 
    } 
    return xmlDoc; 
}