我有一个 id="main-form" 的表单,里面有一个 class="block-footer"
里面有一个元素:
<button type="button">Submit</button>
如何在不向元素添加 Id 的情况下使用 jQuery 找到此按钮?该按钮始终具有提交的文本。
是否值得在我的选择中使用 id="main-form" 作为起点以提高效率?
我有一个 id="main-form" 的表单,里面有一个 class="block-footer"
里面有一个元素:
<button type="button">Submit</button>
如何在不向元素添加 Id 的情况下使用 jQuery 找到此按钮?该按钮始终具有提交的文本。
是否值得在我的选择中使用 id="main-form" 作为起点以提高效率?
选择所有<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()
,它具有完全相同的效果。
这将选择包含文本“提交”的所有按钮。
$('button:contains("Submit")')...
或者,如果您对元素有更多了解,可以在里面找到:
$('.block-footer button:contains("Submit")')...
jQuery('#main-form button:contains("submit")')
将在具有提交文本的主窗体内为您提供提交类型的按钮。
您可以使用 jquery包含选择器。
var yourButton = $('button:Contains("Submit")');
使用 :contains 选择器。
这将适用于您的问题:
$(":contains('Submit')").Action()
您可以管理此代码
jQuery('document').ready(function() { jQuery('form').find('button').addClass('hi') });
由于您已经知道表单 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');
}
});
});
我已经包含了一个工作示例演示