.attr()在属性选择一个变量不行

问题描述:

我有这样的代码.attr()在属性选择一个变量不行

<div class="field"> 
    <label>Title</label> 
    <input id="post-titie" type="text"> 
</div> 
<div class="ui olive message" for-field="post-title" hidden> 
    <div class="header">About Title</div> 
    <ul class="list"> 
     <li>Visitors can see your title even if they're not logged in.</li> 
     <li>The title is public.</li> 
    </ul> 
</div> 
​​

我想要做的就是当<input><textarea>集中,显示的信息与DIV .message类。

我将$(this).attr('id')作为变量(例如,post-title),并通过.find('div[for-field="'+forwhom+'"]')找到它。这不起作用。

但是,如果我将var forwhom$(this).attr('id')(jQ选择器)替换为绝对值,如post-title,它确实有效。

很奇怪!根据jQuery文档,.attr()方法返回的字符串不是对象。

什么问题?

+0

只需试试这个'$(':input')'因为:input是一个jquery扩展 – gurvinder372

+0

当我尝试它时它工作正常:http://jsbin.com/pusoyej/1/edit?html, js,输出 – Quentin

Div属性for-field="post-title"inputpost-titiespelling mistake

post-titlepost-titie不一样,这就是为什么你的代码没有找到与属性的div。

+0

它是拼写错误。我很不好意思。 – Benyi

我正在获取id属性。检查控制台错误:

$(function(){ 
    $('.form textarea, :input').focus(function(){ 

    var forwhom = $(this).attr('id'); /* working */ 
    /* var forwhom = 'post-title'; works */ 

    console.log(forwhom); 
}); 

}); 

这里是工作提琴 https://jsfiddle.net/sesn/x1ju006b/1/

一些提示:

1)使用Chrome浏览器开发工具的控制台

2测试你的选择)使用.prop()代替.attr()

3).closest() ins tead of $(this).parents().eq(2)