2010-04-26 59 views
6

爲什麼會出現這種失敗...jQuery的:如何找到元素* *沒有某一類

$('div.contactAperson input').not('input.hadFocus').focus(function() { 
    $(this).attr('value', ''); 
}); 

...它的意思嗅出輸入的有沒有得到了類.hadFocus然後當其中一個子集接收到焦點時,它應該將值變爲null。

現在,輸入值總是變爲zapped - 測試.not('input.hadFocus')無法停止執行。

順便說一句,上面的代碼前面的是下面的代碼,這是工作的罰款:

$('div.contactAperson input').focus(function() { 
    $(this).addClass('hadFocus'); 
}); 

感謝任何聰明 - 歡呼聲,-Alan

+0

重複的:我怎麼能不選擇在jQuery的一個給定類的所有元素?(http://stackoverflow.com/questions/2448051) – hippietrail 2012-12-02 02:46:04

回答

4
$('div.contactAperson > :input').not(':input.hadFocus').focus(function() { 
    $(this).attr('value', ''); 
}); 

好運

+0

韓國社交協會,說不上爲什麼但這個版本從不清除價值。但是,對於代碼建議,我會繼續抓它... – Alan 2010-04-26 19:14:30

5

你需要處理程序根據元素的當前狀態運行 - 不是綁定時的狀態。您可能需要使用live綁定。

嘗試是這樣的:

$('div.contactAperson input:not(.hadFocus)').live('focus', function() { 
    $(this).attr('value', ''); 
}); 
+0

謝謝,聽起來就像那樣。現在只需要找到相關的項目。乾杯,阿蘭 – Alan 2010-05-31 12:03:48