68 javascript jquery
我在我的页面中剪了这个:
$('#category_sorting_form_save').click(function(){
var elements = $("#category_sorting_elements > div");
$.each(elements, function(key, value) {
console.info(key," : ",value);
console.info("cat_id: ",value.attr('cat_id'));
});
});
Run Code Online (Sandbox Code Playgroud)
当它被执行时,我得到:
0 : <div class="dragable" cat_id="6" value="" style="opacity: 1;">
value.attr is not a function
console.info("cat_id: ",value.attr('cat_id'));
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?我试图获取div.cat_id元素的值.
ken*_*ytm 131
该jQuery对象的内容是纯DOM元素,它不响应jQuery方法(例如.attr).您需要将值包装$()为将其转换为jQuery对象以使用它.
console.info("cat_id: ", $(value).attr('cat_id'));
Run Code Online (Sandbox Code Playgroud)
或者直接使用DOM方法
console.info("cat_id: ", value.getAttribute('cat_id'));
Run Code Online (Sandbox Code Playgroud)
您正在处理原始DOM元素..需要将其包装在jquery对象中
console.info("cat_id: ",$(value).attr('cat_id'));
Run Code Online (Sandbox Code Playgroud)
传递给each()的回调函数的第二个参数将包含实际的DOM 元素,而不是jQuery 包装对象。您可以调用元素的getAttribute()方法:
$('#category_sorting_form_save').click(function() {
var elements = $("#category_sorting_elements > div");
$.each(elements, function(key, value) {
console.info(key, ": ", value);
console.info("cat_id: ", value.getAttribute('cat_id'));
});
});
Run Code Online (Sandbox Code Playgroud)
或者自己将元素包装在 jQuery 对象中:
$('#category_sorting_form_save').click(function() {
var elements = $("#category_sorting_elements > div");
$.each(elements, function(key, value) {
console.info(key, ": ", value);
console.info("cat_id: ", $(value).attr('cat_id'));
});
});
Run Code Online (Sandbox Code Playgroud)
或者简单地使用$(this):
$('#category_sorting_form_save').click(function() {
var elements = $("#category_sorting_elements > div");
$.each(elements, function() {
console.info("cat_id: ", $(this).attr('cat_id'));
});
});
Run Code Online (Sandbox Code Playgroud)