美好的一天..
我有模态,在模态内我有div 类
<div id="user-details-content" class="modal-body">
...
</div>
我使用 ajax 在该模态中提供内容。
这是提供的内容:
<div id="hidden" class="hidden">
<input type="hidden" name="id" class="id" id="id" value="1">
<input type="hidden" value="email@email.com" class="email">
</div>
现在我尝试使用此 ajax 获取该输入类型="隐藏">
var id = $(this).parents('#user-details-content').find('.id').val();
但它在我的控制台中返回未定义.log
关于如何获取输入类型="隐藏"和值的任何建议?
编辑 - 这是我的 ajax 函数
function inquiryId(){
var id = $(this).parents('#user-details-content').find('.id').val();
console.log(id);
$.ajax({
url: 'php_file.php',
type: 'POST',
data: { id: id,
},
dataType: 'json',
success: function(result){
console.log(result);
}
});
}
可能会出现
此问题,因为您在加载 DOM 后加载了 html。我想你有某种事件侦听器吧?
解决方法可能是执行以下操作:
$(document).on('some_event', '#your_css_selector', function(e){
// do your stuff here
});
只想获取输入类型=隐藏值?
JQuery 可以获取值,无论它是隐藏的还是显示的。
$('#id').val();
$('.email').val();
这没关系。
从代码行:
var id = $(this).parents('#user-details-content').find('.id').val();
如果您知道input[type="hidden"]
的确切id
和class
属性,我可以建议使用$("#id").val()
和$(".email").val()
。下面是一个片段来展示我的建议,希望对您有所帮助。
$(function(){
$("button").click(function(event) {
buttonSubmit_OnClick();
});
});
function buttonSubmit_OnClick() {
var message;
message = "Hello " + $("#id").val() + "! ";
message += $(".email").val();
$("p").html($("p").html() + "<br>" + message);
/* $.ajax() code-block goes here */
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="hidden" class="hidden">
<input type="hidden" name="id" class="id" id="id" value="1">
<input type="hidden" value="email@email.com" class="email">
<button>Click me!</button><!-- this is for demo! -->
</div>
<p></p><!-- this is for demo! -->
作为旁注:
为了更好地优化客户端代码:
$(this)
很强大,但也是一个通配符。 jQuery总是在更新this
,所以,this
可能并不总是你所期望的。最好只在真正需要时才使用,当你这样做时,将其引用存储在变量中。记住,权力越大,责任越大。基于 ID 的选择器要快得多,因为它们使用浏览器原生的
document.getElementById()
来处理,而不是通过 jQuery 的嘶嘶声选择引擎。- 如果可能的话,要具体。避免使用通用选择器,例如
.children()
或.parents()
。
这是关于优化jQuery选择器的更有说服力的读物。