我的HTML看起来像这样
<li>
<div class="patient-details">
<span class="patent-name-heading">
<a id="Will simth" href="---- "?patientId=12</a>
</span>
</div>
</li>
请注意,id中有空格。
我试过这个
$("#patientSelection li").click(function() {
var res = $(this).find(".patent-name-heading a").attr("id");
var url= "#" + res ;
console.log(url);
$(url).click();
});
我也试过这个
$("#patientSelection li").click(function() {
$(this).find(".patent-name-heading a").click()
});
我收到了错误
Uncaught RangeError: Maximum call stack size exceeded
at RegExp.exec (<anonymous>)
at RegExp.[Symbol.match] (<anonymous>)
at String.match (native)
at HTMLLabelElement.<anonymous> (https://code.jquery.com/jquery-1.11.3.min.js:5:14722)
at Function.each (https://code.jquery.com/jquery-1.11.3.min.js:2:2975)
at m.fn.init.each (https://code.jquery.com/jquery-1.11.3.min.js:2:835)
at m.fn.init.toggleClass (https://code.jquery.com/jquery-1.11.3.min.js:5:14581)
然而它不起作用。有什么建议吗?
答案 0 :(得分:4)
由于您的id
属性值包含空格,因此无法生效,生成的搜索引擎#Will simth
会搜索元素中的标记simth
,其Will
为id
而是直接触发click事件或转义id selector using \\
中的空格。
$("#patientSelection li").click(function() {
$(this).find(".patent-name-heading a").click()
});
要转义空间,您可以使用String#replace
方法或使用attribute equals selector。
$(url.replace(/ /g,'\\ ')).click();
// or
$('[id="' + url + '"]').click();
<小时/> 更新:要使用
event.stopPropagation()
方法阻止事件冒泡到DOM树,或使用event.target
方法检查is()
属性不是a
标记。
$("#patientSelection li").click(function() {
$(this).find(".patent-name-heading a").click()
}).find(".patent-name-heading a").click(function(e){
e.stopPropagation()
});
或
$("#patientSelection li").click(function(e) {
if(!$(e.target).is('.patent-name-heading a'))
$(this).find(".patent-name-heading a").click()
})
答案 1 :(得分:0)
只需使用span
作为点击区域,选择class
属性而不是ID,并使用href属性而不是ID:
$(".patent-name-heading").click(function() {
var res = $(this).find(".patent-name-heading a").attr("href");
var url= "#" + res ;
console.log(url);
$(url).click();
});