使用$(this)而不是selector

时间:2010-10-14 13:21:32

标签: jquery

如何在“if”语句中使用$(this)而不是下面代码中的完整选择器。我尝试了一些“这个”用法的不同组合,但都没有用。其中有......

if ($("this :selected").text().indexOf("[Subtract") >= 0){
if ($(this" :selected").text().indexOf("[Subtract") >= 0){

我确信它必须非常简单,我今天无法理解。

<script type="text/javascript" language="javascript">
$(document).ready(function(){
$("select[name^=SELECT___]").change(function() {
if ($("select[name^=SELECT___] :selected").text().indexOf("[Subtract") >= 0){
alert('');
}
});
});
</script>

5 个答案:

答案 0 :(得分:3)

使用$(this)上的find method查找this后代的特定元素:

$(this).find(":selected").text().indexOf("[Subtract")

答案 1 :(得分:3)

您可以指定this作为选择器的上下文:

$(":selected",this)

但它最终只会被转变为into @Gumbo's answer。这样会更有效率。


最终,我也不会使用。如果您确实需要选择<option>,这将是另一种方法:

this.options[ this.selectedIndex ].text.indexOf(...;

由于this<select>元素,因此您使用其options属性存储选项数组,并使用其selectedIndex属性从中获取选定的元素。 options

然后使用<option>元素的text属性来获取文本。

这种方式效率更高。

答案 2 :(得分:2)

$(本).filter( ':选择')

http://api.jquery.com/filter/

答案 3 :(得分:2)

试试这个:

$(":selected", this)

这将“:selected”选择器限制为“this”对象的上下文。更多信息here

答案 4 :(得分:0)

jQuery'is'选择器似乎做你想要的,虽然我还没有检查过:http://api.jquery.com/is/

if($(this).is(":selected").text().indexOf("[Subtract") >= 0){ ... }