在jQuery中获取元素的值

时间:2011-04-18 10:46:56

标签: javascript jquery

感谢各位成员的帮助,我的代码运作良好。现在我有最后一步/请求。我有以下代码,有些人可能在最后一小时之前看到过:

<script type="text/javascript">
    $(document).ready(function () {
        $("[id^=topic]").change(function () {
            var a = 'pk' + $(this).attr('id').replace('topic', '');
            var b = $(a).val()
            alert(b);
        });
    });
</script>

然后是:

<td id='pk_1'>Cat</td>
<td id='pk_2'>Dog</td>   

此代码选择pk_1,pk_2等,并放入名为“a”的变量中。我想要的是不要获得元素pk_1的值。我尝试了一些不同的方法来获得这个并投入“b”。例如,我添加了“#”。没有工作。有时警报框会在某些时候显示“未定义”一词。有人有什么建议吗?

谢谢大家

4 个答案:

答案 0 :(得分:1)

使用.html()代替.val()

...
var a = '#pk' + $(this).attr('id').replace('topic', '');
var b = $(a).html();
alert(b);

答案 1 :(得分:1)

一些事情

$(document).ready(function () {
    $("[id^=topic]").change(function () {
        var a = '#pk_' + $(this).attr('id').replace('topic', ''); //add # and _
        var b = $(a).html(); //use .html and not .val
        alert(b);
    });
})

这应该适合你。

答案 2 :(得分:0)

由于它是一个id,因此选择器应以#开头。将其添加到选择器。此外,td元素没有value,只有input个元素。您可能想要内部text(或者,也许是html)。如果这不起作用,那么检查id是否符合预期。

<script type="text/javascript">
    $(document).ready(function () {
        $("[id^=topic]").change(function () {
            var a = '#pk' + $(this).attr('id').replace('topic', '');
            var b = $(a).text()
            alert(a + ' has value ' + b);
        });
    });
</script>

答案 3 :(得分:0)

基于一个非常具体的ID,比如id ='topic_1'恰好对应于id ='pk_1',我会说你应该跳过整个替换/操作id标签来找到另一个。

而是使用元数据插件。

<input type=text id="topic1" class="topic {pk:#pk_1}"/>
<input type=text id="topic2" class="topic {pk:#pk_2}"/>

在剧本中:

$(document).ready(function () {
    $(".topic").change(function () {
        alert($($(this).metadata().pk).html());
    }
}

元数据可以在这里下载:

http://plugins.jquery.com/project/metadata