Javascript jQuery链接函数和;这是:在本例中,我的语法哪里不正确?

Javascript jQuery链接函数和;这是:在本例中,我的语法哪里不正确?,javascript,jquery,forms,Javascript,Jquery,Forms,情况如下: 我有3个按钮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>

情况如下:

我有3个
按钮
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>
应与单击的
按钮的
id
相关。这可能看起来很傻,但这是我整合页面逻辑的方法,这样服务器上的单个脚本就可以处理一组相关的AJAX请求

  • delete btn
    单击-->
    jobAction
    获取
    删除的
  • updatebtn
    单击-->
    jobAction
    获取
    更新的
  • 添加btn
    单击-->
    jobAction
    获取
    添加的
我用于
单击事件的函数以开头

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.IndexOf('-')
时,
this
引用调用
子字符串的对象,它是
jQuery(this.attr('id')
返回的字符串


这不对吗?如果是这样,你能帮我理解为什么吗?是否有一种更高效、更紧凑的方法来完成整个过程?

您的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,简写的方法就是$ 您的代码中似乎有一个“”。请更改此选项:

'input[name="jobAction]"'
致:

请注意,而不是:

jQuery('.job-update-button').click(function(){}
我用过:

$('.job-update-button').click(function(){}
您可以每次调用jQuery,但$更容易


如果这不是您要查找的内容,请告诉我,我将编辑或删除。

让我们将您的代码分解一下,使其更清晰:

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内部工作的方式(您可以显式设置函数时的
this
或“scope”)

这意味着您正试图调用一个HTML元素(注意拼写是否正确),该元素没有
indexOf
方法

另外,请注意,大多数人对jQuery方法使用
$
速记

要修复代码,这可能就足够了:

$('.job-update-button').click( function(){

    $('input[name="jobAction"]').val( $(this).attr('id').replace(/-btn$/, '') );

});

在这里,我使用带有a的方法来去掉id中附加的'-btn'部分。

这不是绑定到click的对象吗?你没有在click处理程序之外创建一个新函数。加上错误的函数名。另外,如果你不将它拉到变量中,很难读取。这与此无关子字符串。它的值与您将其传递给jQuery()时的值相同。将attr('id')返回的值分配给一个变量,然后在该变量上的do your substring和indexOf“
this
引用调用
substring
”的对象-否,就像
jQuery(this)中的
this
一样
不引用调用
.val()
的对象。它作为参数传递,与在任何地方调用的函数无关。它绑定到单击处理程序的
函数(){
范围,并引用被单击的DOM对象。选择
this.id.split(“-”[0]
不会
this.split(“-”)[0]
效率低下,因为它不需要解析
(“-”)
后面的所有内容,以便构造数组的其余部分?用户需要ID子字符串加上名称撇号。OOPS!已经调整。cheers@code,没有看到该要求。
jQuery('.job-update-button').click( function(){

    var value = jQuery(this).attr('id').substring(0, this.IndexOf('-'));

    jQuery('input[name="jobAction"]').val( value );

});
$('.job-update-button').click( function(){

    $('input[name="jobAction"]').val( $(this).attr('id').replace(/-btn$/, '') );

});