我需要禁用网页上除 input[type=text] 元素之外的所有内容的选择。
这个对类似问题的公认答案几乎可以解决问题,但它不会禁用对包含 input[type=text] 元素的容器的选择。因此,用户仍然可以通过从这些容器之一中启动拖动操作来进行选择。
这甚至可能吗,即是否可以禁用容器元素的选择,同时为子元素启用它(特别是子输入=文本元素)。
@Pointy,“为什么不直接取消第一个 .not() 电话?”
拨出第一个.not
电话,将给出:
$('body').not('input').disableSelection();
正如链接问题中所指出的,它仍然会禁用页面上的所有内容,包括 input[type=text] 元素。
@David Thomas,“你有现场演示吗……”
我没有现场演示,但它相当简单。例如,带有一点填充的 div 包含一个 input[type=text] 元素。结果是:
对于
$('body').not('input').disableSelection();
所有页面(包括输入元素)都禁用了 selectiopn。对于
$('body *').not(':has(input)').not('input').disableSelection();
所有不包含输入元素的元素,禁用选择。但是可以通过从包含输入元素的容器中启动拖动操作来选择整个页面。