当前位置:  开发笔记 > 编程语言 > 正文

如何在jQuery中确定匹配元素的元素类型?

如何解决《如何在jQuery中确定匹配元素的元素类型?》经验,为你挑选了4个好方法。

我通过ID名称匹配ASP.Net生成的元素,但是我有一些元素可以呈现为文本框或标签,具体取决于页面上下文.我需要弄清楚匹配是否是文本框或标签,以便知道是通过val()还是通过html()获取内容.

$("[id$=" + endOfIdToMatch + "]").each(function () {
    //determine whether $(this) is a textbox or label
    //do stuff
});

我找到了一个不起作用的解决方案,只返回"undefined":

$("[id$=" + endOfIdToMatch + "]").each(function () {
    alert($(this).tagName);
});

我错过了什么?



1> Tomalak..:

只是一个jQuery太多了:

$("[id$=" + endOfIdToMatch + "]").each(function () {
    alert(this.tagName);
});


或者`$(this).get(0).tagName`
@Znarkus:没错,但没有意义.;)
不,不是在这种情况下.但是如果你有一个带有jQuery对象的变量,这将是你必须要做的:)

2> Christian Da..:

不使用each()就考虑这个解决方案:

var elements = $("[id$=" + endOfIdToMatch + "]");
var vals = elements.is("input").val();
var htmls = elements.is("label").html();
var contents = vals.concat(htmls);

看看文档是什么.



3> Jelgab..:

你也可以使用这样的东西:

if ($(this).is('input:checkbox'))

将"this"替换为您需要的任何实例,将"checkbox"替换为您需要的任何输入类型.



4> CMPalmer..:

我第一次回答自己的问题.经过一些实验:

$("[id$=" + endOfIdToMatch + "]").each(function () {
   alert($(this).attr(tagName));
});

作品!


还有一个jQuery太多了.:-)你有DOM元素已经"this",不需要再包装它!
推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有