以下是这种情况:
我有3 button
s
<button type="button" class="job-update-button wp-core-ui button-primary" id="delete-btn">Remove</button>
<button type="button" class="job-update-button wp-core-ui button-primary" id="update-btn">Update</button>
<button type="button" class="job-update-button wp-core-ui button-primary" id="add-btn">Add</button>
和input
<input type="hidden" name="jobAction" value="" />
其value
应与点击的id
的{{1}}相关联。它可能看起来很愚蠢,但这是我整合页面逻辑的方式,这样服务器上的单个脚本就可以处理一堆相关的AJAX请求。
button
点击了 - &gt; delete-btn
获得jobAction
value
delete
点击了 - &gt; update-btn
获得jobAction
value
update
点击了 - &gt; add-btn
获得jobAction
value
我用于add
事件的功能以
click
我想弄清楚为什么我会
this.IndexOf不是函数。
我的想法是,当我调用jQuery('.job-update-button').click(function(){
// change the value of the memberAction hidden input based on which member-update-button was clicked
jQuery('input[name="jobAction]"').val(jQuery(this).attr('id').substring(0, this.IndexOf('-')));
时,this.IndexOf('-')
引用调用this
的对象,这是substring
返回的字符串。
这是错的吗?如果是这样,你能帮我理解原因吗?是否有更有效和紧凑的方式来完成整个过程?
答案 0 :(得分:-1)
你的Jquery函数搞砸了所有你需要的是:
$('.job-update-button').click(function(){
// change the value of the memberAction hidden input based on which member-update-button was clicked
var id = $(this).attr('id');
var value = id.replace("-", " ");
$('input[name="jobAction"]').val(value);
})
对于初学者,您不需要调用jQuery,简写方式只是 $ 看起来你的代码中有一个“ outta位置。改变这个:
'input[name="jobAction]"'
要:
'input[name="jobAction"]'
请注意,而不是:
jQuery('.job-update-button').click(function(){}
我用过:
$('.job-update-button').click(function(){}
您可以每次调用jQuery,但 $ 更容易。
如果它不是你要找的东西,请告诉我,我会编辑或删除。
答案 1 :(得分:-1)
让我们将代码缩小一点以使其更清晰:
jQuery('.job-update-button').click( function(){
var value = jQuery(this).attr('id').substring(0, this.IndexOf('-'));
jQuery('input[name="jobAction"]').val( value );
});
在click事件处理程序中,this
引用触发它的HTML元素。这就是jQuery内部工作的方式(当calling or applying函数时,您可以明确设置this
或&#39;范围&#39;。
这意味着您正在尝试在HTML元素上调用indexOf(请注意正确的拼写),该元素没有indexOf
方法。
另外,请注意,大多数人使用$
简写为jQuery方法。
要修复您的代码,这可能就足够了:
$('.job-update-button').click( function(){
$('input[name="jobAction"]').val( $(this).attr('id').replace(/-btn$/, '') );
});
在这里,我使用replace方法和Regular Expression来删除附加的&#39; -btn&#39; id的一部分。