0
<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 

我如何使最后三个语句起作用?有任何想法吗 ?

谢谢

4

1 回答 1

1

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

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

如果您的数据属性键 if data-vt-value,则传递给.data()的键是vtValue

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

对于最后一条语句,选择器是错误的:anchor 不是 UL 的直接子代!

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

演示

注意这样做是没有意义的$("#list-fieldtype").find( $selected )$selected已经是您要使用的元素,因此直接使用它。

于 2012-06-13T07:20:58.053 回答