3

我有一个 id="main-form" 的表单,里面有一个 class="block-footer"

里面有一个元素:

<button type="button">Submit</button>

如何在不向元素添加 Id 的情况下使用 jQuery 找到此按钮?该按钮始终具有提交的文本。

是否值得在我的选择中使用 id="main-form" 作为起点以提高效率?

4

7 回答 7

3

选择所有<button>元素,然后根据它们过滤它们innerHTML

$('button').filter(function() {
  return this.innerHTML == 'Submit';
});

如果需要,您可以通过仅选择带有 的按钮元素来更明确type="button",尽管这效率略低:

$('button[type="button"]').filter(function() {
  return this.innerHTML == 'Submit';
});

至于你的评论:

我可以让它更高效,因为我知道按钮在一个我知道的类的 div 内,并且也在我的表单内,我的 ID 是已知的?

你当然可以。

var $container = $('.element-that-contains-the-button');
$('button', $container).filter(function() {
  return this.innerHTML == 'Submit';
});

您也可以使用$container.find(),它具有完全相同的效果。

于 2012-04-27T05:53:00.293 回答
1

这将选择包含文本“提交”的所有按钮。

$('button:contains("Submit")')...

或者,如果您对元素有更多了解,可以在里面找到:

$('.block-footer button:contains("Submit")')...
于 2012-04-27T05:53:25.853 回答
0

jQuery('#main-form button:contains("submit")')将在具有提交文本的主窗体内为您提供提交类型的按钮。

于 2012-04-27T05:54:07.503 回答
0

您可以使用 jquery包含选择器

var yourButton = $('button:Contains("Submit")');
于 2012-04-27T05:54:22.373 回答
0

使用 :contains 选择器。

这将适用于您的问题:

$(":contains('Submit')").Action()
于 2012-04-27T05:55:58.170 回答
0

您可以管理此代码

jQuery('document').ready(function() { jQuery('form').find('button').addClass('hi') });

于 2012-04-27T06:03:28.460 回答
0

由于您已经知道表单 ID,您只需循环每个按钮元素并检查它是否包含提交文本。

    $(document).ready(function(){
        $("#main-form button").each(function(e){
             var btnCaption = $(this).text();
            if(btnCaption == 'Submit'){
                //do something
                alert('hey, i am the submit button');
            }
        });

    });

我已经包含了一个工作示例演示

于 2012-04-27T06:22:26.637 回答