自定义属性选择和分配值

时间:2012-06-13 07:09:01

标签: jquery html5 html

<ul class="slist single required" id="list-fieldtype" data-vt-name="list-fieldtype" >
            <li style="float:none;"><a class="sbox selected" data-vt-value="type_text" data-vt-selected="1">Text</a></li>
            <li style="float:none;"><a class="sbox" data-vt-value="type_number" data-vt-selected="0" >Number</a></li>
            <li style="float:none;"><a class="sbox" data-vt-value="type_date" data-vt-selected="0" >Date</a></li>
            <li style="float:none;"><a class="sbox" data-vt-value="type_yesno" data-vt-selected="0" >Yes/No</a></li>
            <li style="float:none;"><a class="sbox" data-vt-value="type_multi" data-vt-selected="0" >Multiple Choice Answers</a></li>
        </ul>

var $selected = $('.selected');
var new_fieldtype= $("#list-fieldtype").find( $selected ).removeClass('selected'); //this works


var new_fieldtype= $("#list-fieldtype>li>a").find( $selected ).data('vt-selected','0'); // does not work
         $("#list-fieldtype").find( 'type_text' ).addClass('selected'); // does not work
         $("#list-fieldtype>a[data-vt-value=type_text]").addClass('selected'); // does not work 

如何使最后三个语句有效?有任何想法吗 ?

感谢

1 个答案:

答案 0 :(得分:1)

.data()只能用于获取数据属性的值,不能设置。您必须使用.attr()来设置属性值。

 $selected.attr('data-vt-selected', 0);

如果您的数据属于data-vt-value,则传递给.data()的密钥为vtValue

 var value = $selected.data('vtSelected');

对于最后一个语句,选择器是错误的:锚点不是UL的直接子项!

$('#list-fieldtype > a[data-vt-value=type_text]')
// should be
$('#list-fieldtype a[data-vt-value=type_text]')

<强> DEMO

请注意,执行$("#list-fieldtype").find( $selected )毫无意义。 $selected已经是您要使用的元素,因此请直接使用它。