jQuery上一个()问题

时间:2010-09-16 07:30:17

标签: jquery-plugins jquery jquery-selectors

对不起伙计们,我应该直接发布脚本而不清理它。请检查更新的脚本,它现在应该清理。谢谢!

考虑以下JavaScript:

    var selected = 0;
    var options = 0;

    $('.newListSelected').each(function() {

        selected = $(this).children('.selectedTxt');
        selected = selected.text();

        /* Everything before this line works completely fine */

        options = $(this).prev();

        options.find('option[value=' +selected+ ']').attr('selected', 'selected');

    }).remove();

和HTML:

<select name="type[]" style="display: none;">
    <optgroup>
        <option value="none">Select</option>
    </optgroup>
    <optgroup label="First Group">
        <option value="1">One</option>
        <option value="2">Two</option>
    </optgroup>
    <optgroup label="Second Group">
        <option value="10">Ten</option>
        <option value="20">Twenty</option>
    </optgroup>
</select>

<div class="newListSelected">
    <div class="selectedTxt">20</div>
    <ul class="newList">
        <!-- Other stuff here -->
    </ul>
</div>

我实际上要做的是将selected属性添加到与.selectedTxt中的文本具有相同值的相应选择选项。在上面的代码中,它应该将selected="selected"添加到<option value="20">Twenty</option>

然而,它没有达到预期的效果,我还尝试在alert(option);下面添加prev();,但它没有输出任何有用的内容。

感谢。

2 个答案:

答案 0 :(得分:4)

Javascript工作正常,如下所示:http://jsfiddle.net/4HsXp/

如果您需要在select元素中选择多个项目,则需要设置multiplesize属性,如下所示:

<select multiple="multiple" size="2">
    <option>1</option>
    <option>2</option>
</select>

请参阅:http://reference.sitepoint.com/html/select


修改

console.log语句附加到新代码仍然没有任何问题。 Running it on jsfiddle给了我正确的输出:

jQuery(select)
Original Value: none
New Value: 20

答案 1 :(得分:0)

我不确定你要做什么,但为什么不能选择具有适当选择器的所有选项元素?如果您只想选择一些选项,则必须添加额外的选择器attrbiutes。

$('select option').each(function() {
    $(this).attr('selected', 'selected');
});