.attr() 作为属性选择器中的变量不起作用

.attr() as a variable in attribute selector not work

我有这样的代码

<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>
$('.form textarea, :input').focus(function(){

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

    var _msg = $(this).parents().eq(2).find('div[for-field="'+forwhom+'"]');
    $(_msg).transition('fade down').transition('show');

    console.log(forwhom);
    console.log(_msg);
}

我想做的是当 <input><textarea> 聚焦时,显示消息 div 和 .message class。

我把$(this).attr('id')做成一个变量(比如post-title),用.find('div[for-field="'+forwhom+'"]')找。这不起作用。

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

奇怪!根据 jQuery 文档,.attr() 方法 returns 是一个字符串而不是对象。

有什么问题?

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

post-titlepost-titie 不相同,这就是为什么您的代码找不到具有 for 属性的 div 的原因。

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

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

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

    console.log(forwhom);
});

});

这是工作 fiddle https://jsfiddle.net/sesn/x1ju006b/1/

一些提示:

1) 使用 chrome 开发工具在控制台中测试您的选择器

2) 使用 .prop() 而不是 .attr()

3) .closest() 而不是 $(this).parents().eq(2)