【问题标题】:jquery append not working rightjquery append 不能正常工作
【发布时间】:2011-12-20 20:02:48
【问题描述】:

我有一个表,其中每个 td 元素都包含一个输入标签。我写了以下代码

var elements = $('#booklist .ISBN_number');

将这些输入标签中包含的所有 isbn 数字组成一个数组。

我正在尝试编写一个 jquery 命令来将图像附加到这些输入标签的内容中。我写过

$(elements[index]).val().append("<img src = 'pics/green_checkmark.png'>");

这是行不通的。我已经检查并且 $(element[index]).val() 确实有一个数字 isbn 值。为什么我不能附加它? (我不想让图像显示在输入标签的右侧)

【问题讨论】:

  • 提示:更好的标题是“帮助我理解 jQuery.append()”。
  • @LarryLustig:那你不改变什么?你有代表...
  • String 没有append() 方法。
  • 我不会为礼貌编辑某人的帖子。我希望 OP 会考虑我的建议(并可能调整他们处理技术问题的更广泛的方法),但我宁愿让他们自己决定。
  • 我实际上只是试图改变它,它不会让我在标题中加上“帮助”这个词。我理解你为什么不喜欢这个标题,因为这是我对代码的误解,而不是代码中的错误......

标签: jquery


【解决方案1】:

您不能在文本输入标签中附加图像

您应该尝试after() 并将图像放在输入之后。

【讨论】:

    【解决方案2】:

    jQuery val 函数返回元素当前值的字符串。

    如果要在输入标签后追加图片,可以使用after函数。

    elements.eq( index ).after( "<img src='pics/green_checkmark.png'>" );
    

    【讨论】:

    • 谢谢!这正是我所需要的。直到现在我才知道 eq() 函数。
    【解决方案3】:

    因为.val() 返回的是字符串,而不是 jquery 对象。你必须这样做:

    $(elements[index]).val( $(elements[index]).val() + "<img src = 'pics/green_checkmark.png'>") );
    

    但是,您不能在输入中添加图像。您必须在输入之后添加它,然后使用 css 将其移动到输入上;类似:

    img { margin-left: -15px; }
    

    【讨论】:

    • 你的意思是$(elements[index]).val( $(elements[index]).val() + "&lt;img src = 'pics/green_checkmark.png'&gt;") );
    【解决方案4】:

    假设你的 HTML 看起来像这样:

    <table id="booklist">
        <tr>
            <td>
                <input class="ISBN_number" />
            </td>
        </tr>
        <tr>
            <td>
                <input class="ISBN_number" />
            </td>
        </tr>
        ...
    </table>
    

    您需要做的是使用.after() 方法,该方法会将值附加到选择器之后。

    此外,如果您有一个选择多个对象的 jQuery 对象,则对该对象执行的任何方法都将应用于选择器命中的所有对象。

    所以把你的代码改成。

    var elements = $('#booklist .ISBN_number');
    elements.after("<img src = 'pics/green_checkmark.png'>");
    

    这会给你html ala:

    <table id="booklist">
        <tr>
            <td>
                <input class="ISBN_number" /><img src="pics/green_checkmark.png">
            </td>
        </tr>
        <tr>
            <td>
                <input class="ISBN_number" /><img src="pics/green_checkmark.png">
            </td>
        </tr>
        ...
    </table>
    

    【讨论】:

    • 感谢您的解释,我之前从未使用过after()。但它实际上不是我在这种特定情况下所需要的。在这里,我只想在有效的条件下在输入标记之后附加代码。因此,我正在检查表中的每个输入以查看它是否有效,如果有效,请打勾。我需要的是 eq(),如这里的另一篇文章所示(也使用 after()。)
    猜你喜欢
    • 2021-06-13
    • 1970-01-01
    • 2011-04-16
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多