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>
我似乎无法让 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>