2011-11-02 43 views
1

我有6個類的div。我想知道該div是否具有一,二,三或四類,並將其設置爲選擇框的值。我只想搜索這4個類,不關心div中的其他類。我有以下幾點。有沒有更好的方式來寫它。從指定類列表中獲取jQuery搜索類

<div class="four whatever something"></div> 

<select> 
    <option>one</option> 
    <option>two</option> 
    <option>three</option> 
    <option>four</option> 
</select> 

if ($('div').hasClass(one)) { 
    $('select').val('one') 
} else if ($('div').hasClass('two')) { 
    $('select').val('two') 
} 
if ($('div').hasClass('three')) { 
    $('select').val('three') 
} 
if ($('div').hasClass('four')) { 
    $('select').val('four') 
} 
+0

@flynfish不行,OP想要設置下拉列表中選擇的值。 –

回答

1

你可以嘗試這樣的事情:

var classes = $('div').attr('class').split(/\s/); 
for (var i in classes) 
     $('select').val(classes[i]); 
+0

WTF?不......(1)[不要使用'for ... in'來迭代數組](https://developer.mozilla.org/en/JavaScript/Reference/Statements/for...in#例子)(2)['.val()'不返回布爾值](http://api.jquery.com/val/#val2)。 –

+0

檢查http://jsfiddle.net/MsrzU/1/。它不工作。這個例子應該選擇'two'類。 – Pinkie

+0

@Matt,這實際上工作後,我刪除了如果。 http://jsfiddle.net/MsrzU/2/ – Pinkie

1

當然有更好的方法來寫它。不過,你可能想知道那是怎麼回事。 :)

var classes = ['one', 'two', 'three', 'four'], 
    $div = $('#myDivId'); 

for (var i=0; i<classes.length; i++) 
{ 
    if ($div.hasClass(classes[i])) 
    { 
     $('select').val(classes[i]); 
     // break; 
    } 
} 

break;被註釋掉,使成環的版本匹配當前的代碼。但是,如果您打算使用if...else if...else if...else if而不是if...if...if...if,則需要break

+0

謝謝。這個解決方案很好。 @Uzi解決方案似乎更緊湊。 – Pinkie

+0

好的 - 儘管如此,你知道,代碼與你的語義不同。 –