replaceWith 不适用于 child class

replaceWith does not work with child class

我似乎无法让 replaceWith 与 child class 一起工作。我应该换一种方式吗?

<ul>
<li><input type="text" class="fn" value="Elvis"> <a href="#" class=".rmv" onclick="test()">test</a></li>

<li><input type="text" class="fn" value="Sam"> <a href="#" class=".rmv" onclick="test()">test</a></li>
</ul>

<script>
function test() {
$(this).find('.fn').val().replaceWith('Ted')
}
</script>

jQuery .val() 只能用于获取 INPUT 标签的值。

要设置值,您必须使用“.val(newvalue)”,在您的情况下:

$(this).find('.fn').val('Ted');

编辑:您现在可能已经解决了这个问题,但为了完整起见,这里还有一些更改可以使 jsfiddle 脚本正常工作。

您需要将 javascript 的负载类型设置为 'No wrap' 以便 test 可以在全局范围内找到。

然后,在您的链接上使用 onclick,您还需要将被调用对象:test(this) 传递给回调,如下所示:

<li><input type="text" class="fn" value="Elvis"> <a href="#" class=".rmv" onclick="test(this)">
test</a></li>

最后,为了引用 <input> 标签并更改其值,一种方法是向上查找 <li> 标签,然后向下查找 <input class="fn">jQuery 像这样:

function test(e) {    
   $(e).parents('li').find('.fn').val('Ted');
}

通过这些更改,包含在 <li> 中的 <input> 的值更改为 Ted.

正如旁注 - 你在锚标签上使用 class 是错误的 - 它应该是

<a href="#" class="rmv">

而不是

<a href="#" class=".rmv">

因为您已经在使用 jQuery,您可以像这样使用 jQuery 附加 click() 事件:

$(document).ready(function () {
    $(".rmv").click(function (e) {
        e.preventDefault();
        $(this).prev('.fn').val('Ted');
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<ul>
    <li>
        <input type="text" class="fn" value="Elvis" /> <a href="#" class="rmv">test</a>

    </li>
    <li>
        <input type="text" class="fn" value="Sam" /> <a href="#" class="rmv">test</a>

    </li>
</ul>