如何在jQuery中访问当前的DOM对象(改进代码)

时间:2014-08-13 15:01:06

标签: javascript jquery dom

我试图通过了解this的工作原理来改进我的jQuery代码。我做了这个代码:

$('.type, #type').on('change', function() {
    selected = $(".type, #type :selected").val();
    show = selected != 0 ? true : false;
    $(".div").toggle(show);
});

并且有一些困难:

  • 正如您所看到的,我使用.type, #type,但是如果我想编写一个在任何属性中匹配相同值的选择器呢?例如:class=type, id=type, name=type,是否可以为该案例编写选择器?怎么样?
  • 现在代码正常运行,但我想尽可能使用this,如果我使用选择器.type, #type,那么我将拥有一个包含所有内容的DOM对象该对象的属性,对吧?那么如何访问对象属性或方法呢?例如:selected = $(".type, #type :selected").val();获取selected所选选项的值我试过这个selected = $(this + " :selected").val();但是没有工作

有任何建议或帮助吗?你对我的代码做了哪些改进?

3 个答案:

答案 0 :(得分:1)

回答你的两个问题:

1)通过创建变量并使用它来实现此目的的唯一方法是:

var name = 'type';
$('.' + name + ', #' + name).on(...)

2)你可以这样使用this

$('.type, #type').on('change', function() {
    selected = $(this).val();
    show = selected != 0 ? true : false;
    $(".div").toggle(show);
});

答案 1 :(得分:1)

看看jQuery的选择器部分,没有指定你想要的所有元素,你不能只选择"选择"他们神奇地。请记住,您可以执行以下操作:

$('input[type="text"]')

在第二个问题中,您可以使用:

$(this).find('option:selected').val()

而且,作为旁注,请查看toggle

答案 2 :(得分:0)

要通过ID和类访问,您已经完成了,

.type is class="type"
#type is id="type"

下一个,

name="type" 

略有不同,根据您实际需要的内容,您可以使用find()方法,但通常情况下,您将知道选择器类型,然后您可以使用

$(selector).attr('name') 

它的属性。

使用'这个'在:选定的构造没有工作,没有一些变量hackery,我建议避免它,只是重写整个声明